@variable
Perl和Perl有什么区别$variable
?
我已经阅读了带有符号$
和@
变量名之前的符号的代码。
例如:
$info = "Caine:Michael:Actor:14, Leafy Drive";
@personal = split(/:/, $info);
$
包含的变量与包含的变量有什么区别@
?
@variable
Perl和Perl有什么区别$variable
?
我已经阅读了带有符号$
和@
变量名之前的符号的代码。
例如:
$info = "Caine:Michael:Actor:14, Leafy Drive";
@personal = split(/:/, $info);
$
包含的变量与包含的变量有什么区别@
?
这实际上与变量无关,而是更多关于如何使用变量的上下文。如果你$
在变量名前面加上a,那么它在标量上下文中使用,如果你有a @
,这意味着你在列表上下文中使用变量。
my @arr;
将变量定义arr
为数组$arr[0]
您可以在此处找到有关 Perl 上下文的更多信息:http ://www.perlmonks.org/?node_id=738558
当你对 Perl语言的上下文没有感觉时,你所有关于Perl的知识都将化为乌有。
与许多人一样,您在演讲中使用单个值(标量)和一组中的许多东西。
所以,它们之间的区别:
我有一只猫。 $myCatName = 'Snowball';
它跳到坐的床上@allFriends = qw(Fred John David);
你可以数一数$count = @allFriends;
但根本无法计算它们,因为名称列表不可数:$nameNotCount = (Fred John David);
所以,毕竟:
print $myCatName = 'Snowball'; # scalar
print @allFriends = qw(Fred John David); # array! (countable)
print $count = @allFriends; # count of elements (cause array)
print $nameNotCount = qw(Fred John David); # last element of list (uncountable)
因此,list与array不同。
有趣的功能是您的大脑会与您玩耍的切片:
这段代码很神奇:
my @allFriends = qw(Fred John David);
$anotherFriendComeToParty =qq(Chris);
$allFriends[@allFriends] = $anotherFriendComeToParty; # normal, add to the end of my friends
say @allFriends;
@allFriends[@allFriends] = $anotherFriendComeToParty; # WHAT?! WAIT?! WHAT HAPPEN?
say @allFriends;
所以,毕竟:
Perl有一个关于上下文的有趣特性。你的$
和@
是符号,帮助Perl知道你想要什么,而不是你真正的意思。
$
like s
, so scalar
@
like a
, so array
以 $ 开头的变量是标量,一个单一的值。
$name = "david";
以 @ 开头的变量是数组:
@names = ("dracula", "frankenstein", "dave");
如果引用数组中的单个值,则使用 $
print "$names[1]"; // will print frankenstein
这些 $@%&* 标点符号是什么,我怎么知道何时使用它们?
它们是类型说明符,详见
perldata
:$ for scalar values (number, string or reference) @ for arrays % for hashes (associative arrays) & for subroutines (aka functions, procedures, methods) * for all types of that symbol name. In version 4 you used them like pointers, but in modern perls you can just use references.
$
用于标量变量(在您的情况下为字符串变量。)
@
用于数组。
split
函数将根据提到的分隔符拆分传递给它的变量(:
)并将字符串放入数组中。
Variable name starts with $ symbol called scalar variable.
Variable name starts with @ symbol called array.
$var -> can hold single value.
@var -> can hold bunch of values ie., it contains list of scalar values.