【发布时间】:2013-09-18 12:16:10
【问题描述】:
我有这个代码:
#!/usr/bin/perl
package Modules::TextStuff;
use strict;
use warnings;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(get_text);
my $author;
my $text_tmp1 =<<'ENG';
This is a template text
by $author.
ENG
sub get_text {
my $tmp = shift @_;
$author = shift @_;
print "In sub author= $author lang = $tmp \n";
my $final_str = eval('$text_'.$tmp);
print "$final_str \n";
return $final_str;
}
1;
测试脚本:
#!/usr/bin/perl
use strict;
use warnings;
use Modules::TextStuff;
my $str = get_text('tmp1','jim');
print $str;
当我运行测试脚本时它不起作用。我明白了:
in sub author=jim lang = engp>
变量“$text_tmp1”在 (eval 1) 第 2 行不可用。使用 连接 (.) 或字符串中的未初始化值 $final_str
我该如何解决这个问题?
【问题讨论】:
-
每当你使用一些奇怪的方法来动态创建一个命名变量时,你应该考虑使用散列。
-
-1。即使修复了编译错误,代码也无法提供该输出。
-
@ikegami:我不明白你的意思。如果你复制粘贴代码,你应该得到我提到的相同的错误/警告。我使用 Perl 5-14 Cygwin 以防万一
-
尽管您进行了编辑,但一旦您修复了编译错误,它仍然无法编译或给出错误。但我知道你改变了什么。固定。
-
@ikegami: 你是什么意思它不能编译。在你的评论之后,我复制/粘贴代码并运行它。我唯一的问题是一个错误的变量名称(我的坏那里)。除此之外,这是我得到的错误
标签: perl perl-module