パールのリストと配列を区別する必要があります。
use Perl or die;
#!/usr/bin/perl use strict; my $x = ('a', 'b'); print $x;
結論:
b
#!/usr/bin/perl use strict; my @a = ('a', 'b'); my $x = @a; print $x;
結論:
2
#!/usr/bin/perl my @a = ('a', 'b'); my ($x) = @a; print $x;
結論:
a
#!/usr/bin/perl my @a = ('a', 'b'); print scalar @a;
結論:
2
#!/usr/bin/perl print scalar ('a', 'b');
結論:
b
#!/usr/bin/perl $\ = "\n"; my $x = ('a', 'b', 'c'); print "x = $x"; my $x = @{['a', 'b', 'c']}; print "x = $x"; my $x = (@{['a', 'b', 'c']}); print "x = $x";
結論:
x = c
x = 3
x = 3
#!/usr/bin/perl use strict; my $x; my $y; $y = ($x = ('a', 'b', 'c')); print "x = $x\n"; print "y = $y\n";
x =
y =
#!/usr/bin/perl use strict; my $x; my $y; $y = (($x) = ('a', 'b', 'c')); print "x = $x\n"; print "y = $y\n";
x = a
y = 3
私は真珠
use Perl or die;
詳細はこちら:perldoc perldata、「リスト値コンストラクター」からの読み取り
さまざまな人々との会話から、さらにいくつかの例を学びました。
#!/usr/bin/perl use strict; use Data::Dumper; sub test1 { my %hash; $hash{shift} = 1; print Dumper \%hash; } sub test2 { my %hash; $hash{+shift} = 1; print Dumper \%hash; } test1('test'); test2('test');
結論:
$ VAR1 = { 'shift' => 1 }; $ VAR1 = { 'テスト' => 1 };
ハッシュでは、キー名を引用符で囲む必要はありません。すぐに文字列として表示されます。単項プラスも+シフト演算、つまり$ _ [x]を計算します。xは@_配列のインデックスです
s ggggg;
同等です
s///g;
s演算子を使用すると、/区切り文字を他の文字に置き換えることができます。文字gはここで選択されます
つまり、それはs /// gg;であり、これは単純にs /// g;と同等です。 明らかに、sの後にスペースがあるので、真珠はこの演算子をsggggg関数の呼び出しと区別できます。 また、スペースを/の代わりに区切り文字にすることはできないことも明らかです。
繰り返しになりますが、O = Deparseモジュールについて思い出してください。これについては、私の記事「 単一行Perlプログラム 」で説明しました。
perl -MO=Deparse -le "s ggggg;"
BEGIN {$ / = "\ n"; $ \ = "\ n"; } s /// g; -e構文OK
#!/usr/bin/perl use strict; use Data::Dumper; use constant key => 1; my %hash; $hash{key} = 1; print Dumper \%hash; my %hash2; $hash2{+key} = 1; print Dumper \%hash2; my %hash3; $hash3{-key} = 1; print Dumper \%hash3;
結論:
$ VAR1 = { 'キー' => 1 }; $ VAR1 = { '1' => 1 }; $ VAR1 = { '-key' => 1 };
オペランドが数値の場合、単項「-」は算術否定を実行します。 オペランドが識別子の場合、マイナス記号と識別子を連結した文字列が返されます。
マイナスは、数字の前にある場合はマイナスとして機能します。 識別子の前に来る場合、マイナスと識別子からなる文字列が返されます。
UPD :おそらく最初は彼らは私を誤解し、私をマイナスし始め、「私は目標を設定しません...」というフレーズを追加しました
UPD 2 :
最後の例について。 ドキュメントには
「スカラーコンテキストでのリストの割り当ては、要素の数を返します
代入の右側の式によって生成されます»
つまり、リストに何かを割り当てると、リストに割り当てる要素の数が返されます。
$x = (($foo,$bar) = f());
$ xは、f()によって返される要素の数に依存します
UPD 3 :人々は非常に小さいことを明らかにしたので、日中(おそらく15:00)にカルマを失わないようにドラフトコピーに記事を掲載します。
記事が気に入ったら、保存してください。
UPD 4 :Karmaはそれほど悪くありません。私をサポートしてくれた人に感謝し、ハッシュ{shift}とs gggggの例を追加しました。
UPD 5(08.28.2012) :単項マイナスの例を追加しました。