open my $directory, '<', abc.txt
chomp(my @values = <$directory>);
有一个名为abc.txt
的文件,其中包含以下内容:
abcde
abc
bckl
drfg
efgt
eghui
webnmferg
通过以上几行,我将文件abc.txt
的内容发送到数组
意图是创建一个循环来在文件abc.txt
有关创建循环的任何建议吗?
答案 0 :(得分:3)
open my $directory_fh, '<', abc.txt or die "Error $! opening abc.txt";
while (<$directory_fh>) {
chomp; # Remove final \n if any
print $_; # Do whatevery you want here
}
close $directory_fh;
我更喜欢使用 _fh 对所有文件句柄进行后缀,以使它们更加明显。
while (<fh>)
循环播放文件的所有行。
如果文件可能具有Windows / MS-DOS格式,您可能需要/想要删除最终\r
。
答案 1 :(得分:1)
创建一个循环以在文件abc.txt的所有行上运行命令
foreach my $line (@lines){
#assugming $cmd contains the command you want to execute
my $output = `$cmd $line`;
print "Executed $cmd on $line, output: $output\n";
}
编辑:根据塞巴斯蒂安的反馈
my $i = 0;
while ($i <= $#lines){
my $output = `$cmd $lines[$i]`;
print "Executed $cmd on $lines[$i], output: $output\n";
}
如果你可以破坏阵列,那么:
while (@lines){
my $line = shift @lines;
my $output = `$cmd $line`;
print "Executed $cmd on $line, output: $output\n";
}
如果您想要两次没有引用数组的安全代码,可以在列表赋值中使用splice。
while (my ($line) = splice(@array, 0, 1)) {
my $output = `$cmd $line`;
print "Executed $cmd on $line, output: $output\n";
}