Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 处理文件。什么';怎么了?_Perl - Fatal编程技术网

Perl 处理文件。什么';怎么了?

Perl 处理文件。什么';怎么了?,perl,Perl,我有一个代码,它跳过以# while(已定义(my$line=)){ 如果($line=~/^#/){next;} $line=~/^(\w+);(\w+);*$/; $user_map{$2}=$1; } 我想这段代码也是这么做的 while (defined (my $line = <FILE>)) { unless ($line =~ /^#/) { $line =~ /^(\w+);(\w+);.*$/; $user_map{$2} = $1;

我有一个代码,它跳过以
#

while(已定义(my$line=)){
如果($line=~/^#/){next;}
$line=~/^(\w+);(\w+);*$/;
$user_map{$2}=$1;
}
我想这段代码也是这么做的

while (defined (my $line = <FILE>)) {

    unless ($line =~ /^#/) {
    $line =~ /^(\w+);(\w+);.*$/;
    $user_map{$2} = $1;
    }

}
while(已定义(my$line=)){
除非($line=~/^#/){
$line=~/^(\w+);(\w+);*$/;
$user_map{$2}=$1;
}
}
但事实并非如此

最后一个代码有什么问题


更新:用实际代码替换了
#do stuff

两个代码块的行为应该相同。检查是否有任何打字错误。

详细说明发生了什么以及两个版本的差异。据我所知,代码实际上也应该这样做。我也没有看到任何会造成差异的东西。你如何看待他们的不同行为?你能提供一个输入的例子,你会得到不同的结果吗?你的模式的“*$”部分没有任何用处,所以它不应该在那里:-)你是对的。他们实际上也是这样做的。我不知道他们以前为什么不这么做。
while (defined (my $line = <FILE>)) {

    unless ($line =~ /^#/) {
    $line =~ /^(\w+);(\w+);.*$/;
    $user_map{$2} = $1;
    }

}