Perlの@variable
との違いは何ですか?$variable
変数名の前にシンボル$
とシンボルを含むコードを読みました。@
例えば:
$info = "Caine:Michael:Actor:14, Leafy Drive";
@personal = split(/:/, $info);
を含む変数と を含む変数の違いは何$
ですか@
?
Perlの@variable
との違いは何ですか?$variable
変数名の前にシンボル$
とシンボルを含むコードを読みました。@
例えば:
$info = "Caine:Michael:Actor:14, Leafy Drive";
@personal = split(/:/, $info);
を含む変数と を含む変数の違いは何$
ですか@
?
それは実際には variable についてではなく、変数がどのように使用されるかというコンテキストについてです。変数名の前に a を付けると$
、スカラー コンテキストで使用されます。a がある場合@
は、変数をリスト コンテキストで使用することを意味します。
my @arr;
変数arr
を配列として定義する$arr[0]
Perl コンテキストの詳細については、http: //www.perlmonks.org/? node_id=738558 を参照してください。
この言語の文脈を感じないと、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
に、配列
$ で始まる変数は、単一の値であるスカラーです。
$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.