有时我们在括号中声明标量变量,有人可以告诉我它是什么意思吗?

时间:2017-03-17 18:07:46

标签: perl

当我们在Perl中的括号中声明一个标量实际上是什么意思?

示例:

#!/usr/bin/perl
my ($x)=10;
print "$x";

3 个答案:

答案 0 :(得分:4)

它强制在列表上下文中计算赋值的右操作数。它在你的例子中没用(因为10并不关心上下文),但在其他情况下这很重要。

my @a = qw( a b c );

my $count = @a;           # 3
my ($first_val) = @a;     # a

有关详细信息,请参阅Mini-Tutorial: Scalar vs List Assignment Operator

答案 1 :(得分:2)

这有几个不同的用途。一个非常常见的是在一行中声明多个变量。

my ($a, $b, $c);

您还可以使用它将变量分配给数组索引值

my ($a, $b, $c) = @letters

答案 2 :(得分:2)

除了现有的两个答案之外,还值得注意的是my只是极少数Perl关键字的情况,在某些情况下需要括号,就像if和{ {1}}做。

如果你想同时声明多个变量,你需要parens。

for

如果要将函数的返回值分配给新变量,但将它与其中的某些变量关联,则将它与括号一起使用也很有用。

my $foo, $bar; # only declares $foo, will fail under strict if $bar is not there
my ( $foo, $bar); # works

在此示例中使用localtime,将忽略第一个返回值 seconds 。所有其他值(my ( undef, $min, $hour) = localtime; )也会被忽略,因为我们从不分配它们。