我还处于Perl的早期阶段,如果这很明显就道歉。
我在Perl中声明了一个变量,如下所示:
my $new_filename = 'nope';
现在如果满足某个条件(假设它在这里),我试图重新分配$new_filename
的值,如下所示:
my $new_filename = "$common::conf{'html_dir'}/images/banners/$lc_prodid.$filetype";
我是他们将值分配给表:
my $sql_query = qq(INSERT INTO banner_image (link, title, active, imageloc, rank) VALUES ('$link_text','$banner_text','$active','$new_filename','$new_rank'));
我遇到的问题$new_filename
在数据库中始终显示为“nope”。有人可以建议为什么会这样吗?
由于
答案 0 :(得分:7)
关键字my
用于声明变量。这意味着它将告诉Perl有关给定scope中的新变量。你只需要这样做一次。声明变量后,您可以根据需要分配。
my $foo = 'foo';
$foo = 'bar';
但这不是唯一的问题。
现在如果满足某个条件(假设它在这里),我试图重新分配
这可能如下所示:
my $foo = 'foo';
if ( $bar ) {
my $foo = 'bar';
}
现在,您在<{1>之后的那些大括号中的范围中声明了$foo
的新词汇版本 }}。您不会覆盖外部范围中的现有if
。这就是价值不变的原因。
以下是一些提示/摘要:
答案 1 :(得分:2)
如果您要分配:
Key.create(Profile.class, userId)
在if子句内部然后它是if语句范围的本地并且不会覆盖在外面声明的变量,你需要在第二个assingment中省略my