在Perl中使用@和$使用相同的变量名

ins*_*ity 5 perl

我用@和声明相同的变量名称$:

@ask=(1..9);
$ask="insanity";
print ("Array @ask\n");
print ("Scalar $ask\n");
Run Code Online (Sandbox Code Playgroud)

没有使用use strict我正在输出正确但当我使用use strict它时给我一个编译错误.

这两个变量是指两个不同的内存位置还是相同的变量?

Jon*_*ler 21

你有两个变量:

@ask
$ask
Run Code Online (Sandbox Code Playgroud)

如果你愿意,你也可以%ask(哈希).然后你会写:

print $ask, $ask[0], $ask{0};
Run Code Online (Sandbox Code Playgroud)

引用标量,数组和哈希.

一般来说,你应该避免这种处理,但变量都是截然不同的,Perl不会混淆.

唯一的原因use strict;是抱怨是因为你没有为变量添加前缀my:

#!/usr/bin/env perl
use strict;
use warnings;

my @ask = (1..9);
my $ask = "insanity";
my %ask = ( 0 => 'infinity', infinity => 0 );
print "Array @ask\n";
print "Scalar $ask\n";
print "Hash $ask{0}\n";
Run Code Online (Sandbox Code Playgroud)


小智 15

use strict;你需要在使用前先声明变量.

例如:

use strict;
my @ask=(1..9);
my $ask="insanity";
print ("Array @ask\n");
print ("Scalar $ask\n");
Run Code Online (Sandbox Code Playgroud)

  • 解释他的行为会是一种非常好的选民? (2认同)