1

各行が 1 つの要素のみである .txt ファイルがあります。件名のとおり、.txt の 1 行目を入力したいと思います。次に、入力したらすぐに .txt ファイルから削除したいと思います。同時に、前の 2 行目の要素が新しい最初の行になるように、各要素を 1 行ずつ上にスライドさせたいと思います。

次の先に進む方法がよくわかりません: open( my $l, '<', 'Input.txt' ) または die "Input.txt を開けません: $!";

4

4 に答える 4

2

を使用すると、配列内の各要素がファイル内の行に対応するように、ファイルを に関連付けるTie::Fileことができます。@array

次の例では、shift演算子は から最初の要素を削除し、@linesそれを に割り当て$first_lineます。@linesそのファイルの最初の行に関連付けられているためfile.txt、 も削除されます。

use strict;
use warnings;

use Tie::File;

tie my @lines, 'Tie::File', 'file.txt' or die $!;

my $first_line = shift @lines;

print "first line WAS: $first_line\n";

untie @lines;
于 2013-04-20T20:36:46.633 に答える
0

別のオプションは次のとおりです。

use strict;
use warnings;
use File::Slurp;

my $i = 0;
write_file $ARGV[0], grep $i++, read_file $ARGV[0];

使用法:perl script.pl inFile

スクリプトはリスト コンテキストでFile::Slurpgrepを使用し、0 でない場合にのみ行が通過できるよう$iにするため、最初の行が省略され、行 2 .. n がファイルに書き戻されます。

お役に立てれば!

于 2013-04-20T20:18:53.173 に答える