なぜこれは機能しませんか?Perl匿名リストの質問
my @str = split...
が、私はそれをスキップする方法はあります覚えている:
my $str = 'we,you,them,us';
print $(split($str,','))[0];
私は私が行うことができます知っています。
ありがとう、
なぜこれは機能しませんか?Perl匿名リストの質問
my @str = split...
が、私はそれをスキップする方法はあります覚えている:
my $str = 'we,you,them,us';
print $(split($str,','))[0];
私は私が行うことができます知っています。
ありがとう、
スプリットリバースの引数の順序があります。括弧の前にドル記号はないはずです。以下の作品(プラス記号力が式として次のことを評価するためのperl):
use strict;
use warnings;
my $str = 'we,you,them,us';
print +(split(',',$str))[0];
あなたはそこに一列に4文字を持っています、XYXY、最初のYは、2番目のYとはまったく異なる何かをしていますが、外観は同じです。これは混乱しています。そういうわけで、人々はそのシナリオで太ったコンマに切り替えるのです。また、引数の先頭にプラスを置くと、混乱やエラーの可能性を犠牲にして1文字しか保存されません。したがって、最後の行を 'print((split、" => $ str)[0]);と書き換えることをお勧めします。それほど*読みやすい? ***私は***と確信していますが、あなたの1kg・キロメートルは異なるかもしれません。 – tchrist
ありがとう!私はこのことについてどこで読むことができますか? perltocのサブマンページを見ていましたが、関連するものは見つかりませんでした。 – snoofkin
@ soulSurfer2010:何について読む?もっとも良いことは、podディレクトリへのchdirとgrepです。 – tchrist
関数の戻り値のほんの一部にしかアクセスする必要がない場合は、使用できるスコープの小さい関数があるかどうかを確認する必要があります。この場合、私は正規表現を使用するかもしれません:
print $str =~ /^([^,]*)/;
私はコンパイルすることさえできません。 '$(...)'が何かのために働くことができるなら、あなたはあなたが期待しているもの以外を得るかもしれません。しかし、これはその言語のケースであり、そのようには機能しません。あなたは*スカラー逆参照括弧* $ {...} 'から何かを得たかもしれません。それは、「私たち、あなた、彼ら、私たち」のために '$ _'を探していて、それを見つけていないのです。あなたが分割したいのは* second *引数で、区切り文字が最初です。 – Axeman