ファイルの各行が 1 日のデータを表している場合、テキスト ファイルに保存された毎日の株価のファイルがあります。例えば:
20/05/2013 23.46 23.58 23.43 23.57 32884800 23.57
17/05/2013 23.27 23.48 23.2 23.46 41037700 23.46
保存されたファイルの最後の日付 (最後の日付はファイルの上部に表示されます) をチェックし、それを現在の日付と比較し、等しくない場合は、欠落している行のみを追加して欠落しているデータを更新するアップデーターを作成しました (新しい行は既存のファイルの上に追加されます)。
このアプローチを使用して行を追加しました。
open my $in, '<', $file or die "Can't read old file: $!";
open my $out, '>', "$file.new" or die "Can't write new file: $!";
print $out "# Add this line to the top\n";
while( <$in> )
{
print $out $_;
}
close $out;
そして、一般的に、1 つの問題だけで問題なく動作します。最も古い行と最初に追加された最初の行の間に、空の行が 1 行追加されています。たとえば、最後に保存した日付が
15/05/2013 23.04 23.25 22.91 23.24 40153000 23.24
そして、新しい行が追加されています:
16/05/2013 23.1 23.35 23.1 23.27 33023300 23.27
次のようになります。
15/05/2013 23.04 23.25 22.91 23.24 40153000 23.24
16/05/2013 23.1 23.35 23.1 23.27 33023300 23.27
私はそれがそのように見えるようにしたい:
15/05/2013 23.04 23.25 22.91 23.24 40153000 23.24
16/05/2013 23.1 23.35 23.1 23.27 33023300 23.27
\n
行を追加するときに を取り除くことを考えましたが、長い文字列が 1 つだけ生成されます。どうにかして削除する必要があると思い\n
ますが、最後の行だけです。それ、どうやったら出来るの?
編集: 行末はただLF
のように見えますが、そうではありませんCRLF
。それは問題ですか?/^\s*$/
現在、行が this または this:または this:のような空の行パターンと一致していないように見えるためです/^$/
。