6

@variablePerl和Perl有什么区别$variable

我已经阅读了带有符号$@变量名之前的符号的代码。

例如:

$info = "Caine:Michael:Actor:14, Leafy Drive";
@personal = split(/:/, $info);

$包含的变量与包含的变量有什么区别@

4

6 回答 6

7

这实际上与变量无关,而是更多关于如何使用变量的上下文。如果你$在变量名前面加上a,那么它在标量上下文中使用,如果你有a @,这意味着你在列表上下文中使用变量。

  • my @arr;将变量定义arr为数组
  • 当您想访问一个单独的元素(即标量上下文)时,您必须使用$arr[0]

您可以在此处找到有关 Perl 上下文的更多信息:http ://www.perlmonks.org/?node_id=738558

于 2012-08-01T07:43:43.030 回答
6

当你对 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)

因此,listarray不同。

有趣的功能是您的大脑会与您玩耍的切片:

这段代码很神奇:

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

于 2012-08-01T10:31:02.153 回答
4

以 $ 开头的变量是标量,一个单一的值。

   $name = "david";

以 @ 开头的变量是数组:

   @names = ("dracula", "frankenstein", "dave");

如果引用数组中的单个值,则使用 $

   print "$names[1]"; // will print frankenstein
于 2012-08-01T07:30:09.023 回答
3

perldoc perlfaq7

这些 $@%&* 标点符号是什么,我怎么知道何时使用它们?

它们是类型说明符,详见 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.
于 2012-08-01T08:10:47.043 回答
2

$用于标量变量(在您的情况下为字符串变量。) @用于数组。

split函数将根据提到的分隔符拆分传递给它的变量(:)并将字符串放入数组中。

于 2012-08-01T07:38:39.023 回答
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.
于 2012-08-01T11:00:09.503 回答