while循环中的Perl显式包名错误,需要解决问题
运行此代码 parsesendnotes.pl 我得到了这些错误 全局符号“%frequencies”要求在./parsenndnotes2.pl第30行显示包名 全局符号“%frequencies”需要在./parsensendnotes2.pl第44行显示包名 全局符号“@tone”要求在./parsensendnotes2.pl第44行显示包名 全局符号“@tone”要求在./parsenndnotes2.pl第45行显示包名 全局符号“$tempo”需要在./parsensendnotes2.pl第45行显示包名 全局符号“@tone”要求在./parsensendnotes2.pl第46行显示包名 全局符号“@tone”要求在./parsensendnotes2.pl第46行显示包名 由于编译错误,./parsensendnotes2.pl的执行被中止while循环中的Perl显式包名错误,需要解决问题,perl,Perl,运行此代码 parsesendnotes.pl 我得到了这些错误 全局符号“%frequencies”要求在./parsenndnotes2.pl第30行显示包名 全局符号“%frequencies”需要在./parsensendnotes2.pl第44行显示包名 全局符号“@tone”要求在./parsensendnotes2.pl第44行显示包名 全局符号“@tone”要求在./parsenndnotes2.pl第45行显示包名 全局符号“$tempo”需要在./parsensendnote
我做错了什么?
my%frequencies
from frequencies.pl没有在parsesendnotes.pl中声明
在主脚本中需要我们的%frequencies
。当然,其他变量也是如此
一些文件:
my%frequencies
from frequencies.pl未在parsesendnotes.pl中声明
在主脚本中需要我们的%frequencies
。当然,其他变量也是如此
一些文件:
frequencies.pl中本地化:my持续到块结束或文件结束
更好的方法是删除my
,然后执行以下操作:
my %frequencies;
eval { %frequencies = do "frequencies.pl"; }
# must check $! and $@ here -- see perldoc -f do`
但是,更好的方法是使用YAML:
频率yml
然后
use YAML qw(LoadFile);
# ...
my $data = LoadFile("freq.yml");
%frequencies = %$data;
至于@tone、$tempo&co,同样,my
变量范围被限制为{}块。你应该这样做
my $x;
if (...) { $x = ... };
使$x
可在if
外部访问 name%frequencies在文件frequencies.pl
中本地化:my持续到块结束或文件结束
更好的方法是删除my
,然后执行以下操作:
my %frequencies;
eval { %frequencies = do "frequencies.pl"; }
# must check $! and $@ here -- see perldoc -f do`
但是,更好的方法是使用YAML:
频率yml
然后
use YAML qw(LoadFile);
# ...
my $data = LoadFile("freq.yml");
%frequencies = %$data;
至于@tone、$tempo&co,同样,my
变量范围被限制为{}块。你应该这样做
my $x;
if (...) { $x = ... };
使$x
可在if
外部访问 “处理范围”“处理范围”