不能使用未定义的值作为符号perl
发布时间:2020-12-15 21:44:07 所属栏目:大数据 来源:网络整理
导读:我正在尝试在文件中写入从数组中获取的一些值.但我有一些错误”不能使用未定义的变量作为…第81行的符号引用: foreach $k (sort keys %{$value2}){ print $value4 $k." = ".%{$value2{$k}}. $value3;sub printit{ $value1 = $_[0];#"ipadress" is a string
我正在尝试在文件中写入从数组中获取的一些值.但我有一些错误”不能使用未定义的变量作为…第81行的符号引用:
foreach $k (sort keys %{$value2}){ print $value4 $k." = ".%{$value2{$k}}. $value3; sub printit{ $value1 = $_[0];#"ipadress" is a string $value2 = $_[1];#%hash2 $value3 = $_[3];#"paquet" is a string $value4 = $_[4];#SOURCE is the file name foreach $k (sort keys %{$value2}){ print $value4 $k." = ".%{$value2{$k}}. $value3; if (%{$value2{$k}} >= 2) { print $value4 "s";} print $value4 "n"; } } printit('ipadress',%hash2,' paquet'. SOURCE ); 有人可以指出我有什么问题吗? 事情是我的代码是这一个,它工作正常.而且我没有连同SOURCE并且它仍然正常工作. print SOURCE "Ipadress #2nn"; foreach $k (sort keys %hash2){ print SOURCE $k." = ".$hash2{$k}." paquet"; if ($hash2{$k} >= 2) { print SOURCE "s";} print SOURCE "n"; } 但我有很多代码可以做同样的事情所以我想创建一个能够减少行数的函数. 解决方法
你在这里忘了逗号或连词:
print $value4 $k." = ".%{$value2{$k}}. $value3; Perl认为你想使用$value4有一个文件句柄(符号),显然$value4是未定义的.它未定义的原因是因为你为它赋值$_ [4],但你可能想要$_ [3](因为数组是零索引的.) 看起来你打算将$value4作为输出的文件名;如果是这种情况,那么你需要实际打开该文件来获取文件句柄: open my $fh,'>',$value4 or die "Could not open file $value4: $!"; ... print { $fh } $k." = ".%{$value2{$k}}. $value3; 所以你要解决三件事: >找出为什么$value4未定义并修复它. (当你发现自己在标量名称上附加数字时,你可能还是想要使用数组.你可以直接使用@_或者将值集中到@args数组而不是一堆标量.) (在我意识到你缺少文件句柄后更新了建议) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |