6

Perlの@variableとの違いは何ですか?$variable

変数名の前にシンボル$とシンボルを含むコードを読みました。@

例えば:

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

を含む変数と を含む変数の違いは何$ですか@?

4

6 に答える 6

7

それは実際には variable についてではなく変数がどのように使用されるかというコンテキストについてです。変数名の前に a を付けると$、スカラー コンテキストで使用されます。a がある場合@は、変数をリスト コンテキストで使用することを意味します。

  • my @arr;変数arrを配列として定義する
  • 1 つの個々の要素 (スカラー コンテキスト) にアクセスする場合は、使用する必要があります。$arr[0]

Perl コンテキストの詳細については、http: //www.perlmonks.org/? node_id=738558 を参照してください。

于 2012-08-01T07:43:43.030 に答える
6

この言語の文脈を感じないと、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は配列と同じではありません。

興味深い機能は、あなたの心があなたとトリックをするスライスです:

このコードは魔法です:

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に、配列

于 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 に答える