添加use strict后,为什么我的代码无效?使用警告;?有没有办法让它发挥作用?
以前,工作代码是:
#!/usr/bin/perl -s print "x: $x\n"; print "y: $y\n";
我运行的命令是perl -s test.pl -x =“hello”-y =“world”.输出是:
x: hello y: world
Variable "$x" is not imported at test.pl line 4. Variable "$y" is not imported at test.pl line 5. Global symbol "$x" requires explicit package name at test.pl line 4. Global symbol "$y" requires explicit package name at test.pl line 5. Execution of test.pl aborted due to compilation errors.
解决方法
您正在使用一个基本的开关解析器perl -s,它使用全局变量.为了使它与use strict一起使用,你需要引用全局变量:$main :: x,如ruakh指出的那样.
但即便如此,词汇变量(用我的声明)在几乎所有情况下都是可取的.做就是了:
use strict; use warnings; my ($x,$y) = @ARGV; print "x: $x\n"; print "y: $y\n";
并使用:
perl test.pl hello world
有关更详细和类似开关的处理,请查看Getopt::Long模块.