[英]Syntax errors while trying to change a foreach loop
我对Perl还是很陌生,我想学习足够的知识来重构几行遗留代码。
这是我的代码片段:
my ( $data2 ) = @_;
foreach $app (@{$data2->{record}})
{
...
if ( $app->{submission_date__required_} )
{
$datetime = convert_date( $app->{submission_date__required_}, "both" );
print $datetime;
}
}
我试图做的是这样的:
my $data = pop $data2;
my $app = $data->{record};
if ( $app->{submission_date__required_} )
{
$datetime = convert_date( $app->{submission_date__required_}, "both" );
print $datetime;
}
关于我在做什么错以及如何实现我所需要的任何解释(从循环中检索最后一项并将其分配给$ app而不是遍历整个循环)将不胜感激。
我在日志中有奇怪的错误,该页面无法加载。 错误日志显示如下:
[Tue May 10 14:55:20 2016] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value in lc at submitapp.pl line 48.
[Tue May 10 14:55:20 2016] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value $notix in print at submitapp.pl line 177.
[Tue May 10 14:55:20 2016] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value $store in string eq at submitapp.pl line 249.
[Tue May 10 14:55:20 2016] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value $store in string eq at submitapp.pl line 258.
[Tue May 10 14:55:20 2016] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value $store in string eq at submitapp.pl line 267.
[Tue May 10 14:55:20 2016] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value $operating_mode in string eq at submitapp.pl line 287.
[Tue May 10 14:55:20 2016] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value $operating_mode in string eq at submitapp.pl line 300.
[Tue May 10 14:55:20 2016] [error] [client xxx.xxx.xxx.xxx] Use of uninitialized value $operating_mode in string eq at submitapp.pl line 328.
[Tue May 10 15:09:10 2016] [error] [client xxx.xxx.xxx.xxx] syntax error at getqbdata.pl line 415, near "), referer: http://xxx.xxx.xxx.xxx/qb/submitapp.pl?action=Submit
[Tue May 10 15:09:10 2016] [error] [client xxx.xxx.xxx.xxx] \t\tprint", referer: http://xxx.xxx.xxx.xxx/qb/submitapp.pl?action=Submit
[Tue May 10 15:09:10 2016] [error] [client xxx.xxx.xxx.xxx] Execution of getqbdata.pl aborted due to compilation errors., referer: http://xxx.xxx.xxx.xxx/qb/submitapp.pl?action=Submit
[Tue May 10 15:09:10 2016] [error] [client xxx.xxx.xxx.xxx] Premature end of script headers: getqbdata.pl
没关系,在Apache重新启动#9之后,它终于可以工作了。
$data2
是对哈希的引用。 pop()
函数将数组作为参数。 因为$data2
引用哈希,所以没有要删除的“最后一个”元素的概念。 因此,您将需要重新考虑您要做什么。
在您的情况下,循环遍历$data2->{record}
引用的数组。 您可以访问的最后一个元素pop
然而,:
my $app = pop @{$data2->{record}};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.