ここに置いておきます

私は真珠中傷するという目標設定していません。 パールが大好きです。

パールのリストと配列を区別する必要があります。



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



All Articles