当我尝试用Perl打开.txt文件时遇到问题。
文字基本上是:
function(1,1,[5,-5])
我想打印这一行。但是,它不会打印任何内容。
我使用的代码如下:
sub open_txt {
# Open a txt file and return then content in an array
my $filename = $_[0];
my @lines;
my $index_row = 0;
open(my $fh, '<:encoding(UTF-8)', $filename) or die "Could not open file '$filename' $!";
# open(my $fh, '<:encoding(iso-8859-7)', $filename) or die "Could not open file '$filename' $!";
while (my $row = <$fh>) {
chomp $row;
$lines[$index_row] = $row;
$index_row = $index_row + 1;
}
return @lines;
}
my $filename = 'test.txt';
my @lines = open_txt($filename);
while (my $row = <@lines>) {
$index_row = $index_row + 1;
print "[debug] $row\n";
}
在这些情况下,我会得到打印:
function(1,1,[5,-5)
或function(1,1,5,-5])
或function(1,1,[])
,但不适用于function(1,1,[5,-5])
或function(1,1,[,])
或function(1,1,[ ])
。
有什么主意吗?
答案 0 :(得分:3)
while (my $row = <@lines>) {
表示
while (my $row = glob(qq<@lines>)) {
您应该使用
for my $row (@lines) {