Perl中@variable
和$variable
之间有什么区别?
我在变量名称前面读过带有符号$
和符号@
的代码。
例如:
$info = "Caine:Michael:Actor:14, Leafy Drive";
@personal = split(/:/, $info);
包含$
而非@
的变量有什么区别?
答案 0 :(得分:6)
实际上并不是关于变量,而是关于 context 更多关于如何使用变量的信息。如果在变量名前加上$
,那么它将在标量上下文中使用,如果你有@
表示你在列表上下文中使用变量。
my @arr;
将变量arr
定义为数组$arr[0]
您可以在此处找到有关Perl上下文的更多信息:http://www.perlmonks.org/?node_id=738558
答案 1 :(得分:5)
当你感觉这种语言的背景时,你对 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)
因此,列表与数组不一样。
有趣的功能是切片,你的大脑将与你一起玩耍:
这段代码很神奇:
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 了解您想要的,而不是真正意味着什么
$
喜欢s
,所以标量为
@
就像a
一样,所以数组
答案 2 :(得分:3)
以$开头的变量是标量,单个值。
$name = "david";
以@开头的变量是数组:
@names = ("dracula", "frankenstein", "dave");
如果您引用数组中的单个值,则使用$
print "$names[1]"; // will print frankenstein
答案 3 :(得分:2)
所有这些$ @%& *标点符号是什么,以及我如何知道何时使用它们?
它们是类型说明符,详见
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.
答案 4 :(得分:1)
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.
答案 5 :(得分:0)
$
用于标量变量(在您的情况下是一个字符串变量。)
@
用于数组。
split
函数将根据提到的分隔符(:
)拆分传递给它的变量,并将字符串放入数组中。