-1

ファイルにテキストを表示できますが、gedit に新しいテキストを追加した後、更新されたテキストが表示されません。

sub start_thread {
my @args = @_;
print('Thread started: ', @args, "\n");
open(my $myhandle,'<',@args) or die "unable to open file";  # typical open call
for (;;) {
    while (<$myhandle>) {
    chomp;
    print $_."\n";
    }
    sleep 1;
    seek FH, 0, 1;      # this clears the eof flag on FH
}
}

ビデオを更新 https://docs.google.com/file/d/0B4hnKBXrOBqRWEdjTDFIbHJselk/edit?usp=sharing

https://docs.google.com/file/d/0B4hnKBXrOBqRcEFhU3k4dUN4cXc/edit?usp=sharing

更新されたデータの $curpos を出力する方法

for (;;) {
        for ($curpos = tell($myhandle); $_ = <$myhandle>;
            $curpos = tell($myhandle)) {
             # search for some stuff and put it into files
         print $curpos."\n";
        }
        sleep(1);
        seek(FILE, $curpos, 0);
    }
4

4 に答える 4

0

これの代わりに:

seek $myhandle, 0, 1;      # this clears the eof flag on FH

次のようなことを試してみてください:

my $pos = tell $myhandle;
seek $myhandle, $pos, 0;      # reset the file handle in an alternate way
于 2013-10-04T07:06:55.310 に答える
0

ファイル システムは、読み込んでいるファイルの一貫したビューを提供しようとしています。変更を確認するには、ファイルを再度開く必要があります。

この例を確認するには、次のことを試してください。

1. 100 行のテキストを含むファイル (man ページなど) を作成します。たとえば、次のようにします。

man tail > foo

2. ファイルをゆっくり印刷します。

cat foo | perl -ne 'print; sleep 1;'

3.それが行われている間に、別のシェルまたはエディターで、ほとんどの行を削除してファイルを編集してみてください

結果: ファイルを編集したことがないかのように、ファイルはゆっくりと印刷され続けます。もう一度印刷しようとすると、変更が表示されます。

于 2013-10-04T07:13:34.310 に答える