ここに置いておきます

私は真珠中傷するという目標設定していません。 パールが大好きです。
パールのリストと配列を区別する必要があります。

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) :単項マイナスの例を追加しました。

Source: https://habr.com/ru/post/J150140/


All Articles