有一个perl程序,中state的用法错误程序如下:/usr/bin/perluse strict;sub greet{state @people;my $num;foreach (@_){push (@people,$_);}$num = @people;if($num == 1){print "\n你是第一个来的人!\n";}else{print "\n$people[$#people-1]已
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/25 01:47:13
![有一个perl程序,中state的用法错误程序如下:/usr/bin/perluse strict;sub greet{state @people;my $num;foreach (@_){push (@people,$_);}$num = @people;if($num == 1){print](/uploads/image/z/13718795-59-5.jpg?t=%E6%9C%89%E4%B8%80%E4%B8%AAperl%E7%A8%8B%E5%BA%8F%2C%E4%B8%ADstate%E7%9A%84%E7%94%A8%E6%B3%95%E9%94%99%E8%AF%AF%E7%A8%8B%E5%BA%8F%E5%A6%82%E4%B8%8B%EF%BC%9A%2Fusr%2Fbin%2Fperluse+strict%3Bsub+greet%7Bstate+%40people%3Bmy+%24num%3Bforeach+%28%40_%29%7Bpush+%28%40people%2C%24_%29%3B%7D%24num+%3D+%40people%3Bif%28%24num+%3D%3D+1%29%7Bprint+%22%5Cn%E4%BD%A0%E6%98%AF%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%9D%A5%E7%9A%84%E4%BA%BA%21%5Cn%22%3B%7Delse%7Bprint+%22%5Cn%24people%5B%24%23people-1%5D%E5%B7%B2)
有一个perl程序,中state的用法错误程序如下:/usr/bin/perluse strict;sub greet{state @people;my $num;foreach (@_){push (@people,$_);}$num = @people;if($num == 1){print "\n你是第一个来的人!\n";}else{print "\n$people[$#people-1]已
有一个perl程序,中state的用法错误
程序如下:
/usr/bin/perl
use strict;
sub greet{
state @people;
my $num;
foreach (@_){
push (@people,$_);
}
$num = @people;
if($num == 1){
print "\n你是第一个来的人!\n";
}else{
print "\n$people[$#people-1]已经比你先到了 \n";
}
}
###开始进行一些测试#########################
&greet("tom");
#greet("Lily");
#greet("wangzi");
报错:
Array found where operator expected at ./Geet1.pl line 5,at end of line
(Missing operator before )
syntax error at ./Geet1.pl line 5,near "state @people"
Global symbol "@people" requires explicit package name at ./Geet1.pl line 5.
Global symbol "@people" requires explicit package name at ./Geet1.pl line 8.
Global symbol "@people" requires explicit package name at ./Geet1.pl line 10.
Global symbol "@people" requires explicit package name at ./Geet1.pl line 14.
Global symbol "@people" requires explicit package name at ./Geet1.pl line 14.
Execution of ./Geet1.pl aborted due to compilation errors.
有一个perl程序,中state的用法错误程序如下:/usr/bin/perluse strict;sub greet{state @people;my $num;foreach (@_){push (@people,$_);}$num = @people;if($num == 1){print "\n你是第一个来的人!\n";}else{print "\n$people[$#people-1]已
state这个是在perl 5.0.10里面提供的功能,
需要明确指明,才可以使用,如何指明:
加入这行:
use feature qw(state);
或者加入这行:
use 5.010;
#!/usr/bin/perl
use strict;
use 5.010;
sub greet{
state @people;
my $num;
foreach (@_){
push (@people, $_);
}
$num = @people;
if($num == 1){
print "\n你是第一个来的人!\n";
}else{
print "\n$people[$#people-1]已经比你先到了 \n";
}
}
###开始进行一些测试#########################
&greet("tom");
&greet("Lily");
&greet("wangzi");
你是第一个来的人!
tom已经比你先到了
Lily已经比你先到了
试下去掉use strict; 或者 添加use feature 'state' ;
在perldoc里有这么一段:"state" variables are only enabled when the "feature 'state'" pragma is in effect
所以,你想用state的话,就需要加入这行:
use feature 'state' ;
use 5.010
state是5.10后出来的