1

Perl の関数によって出力されたリストの一部のみをキャプチャしたいと考えています。

これらの行だけで何かできると思ったのですが、そうではありません。

たとえば、リストの最後の要素をキャプチャします。

(, $my_var)  = split(/_/,$sample_string); 

たとえば、リストの 2 番目の要素をキャプチャします。

(, $my_var, , ,)  = split(/_/,$sample_string);

これはPerlで可能ですか?

4

3 に答える 3

3

undef別の解決策:不要な要素を:に割り当てます。

(undef, $my_var)  = split(/_/,$sample_string); 
于 2012-09-11T23:26:42.667 に答える
2

戻り配列の2番目の要素:

my $second_element = (split(/_/,$sample_string))[1];
于 2012-09-11T23:21:28.880 に答える
2

アンダースコアを 2 つだけ見つければよいのに、なぜすべてのアンダースコアを見つける必要があるのでしょうか。

my ($last_element)   = $sample_string =~ /([^_]*)\z/;
my ($second_element) = $sample_string =~ /_([^_]*)_/;

より一般的には、リスト スライスは次のようになります。

my $last_element   = ( split(/_/, $sample_string) )[-1];
my $second_element = ( split(/_/, $sample_string) )[1];
my @some           = ( split(/_/, $sample_string) )[2,3];

しかし、あなたが要求したものに最も近いのはプレースホルダーです:

my (undef, $second_element) = split(/_/, $sample_string);
于 2012-09-11T23:38:13.143 に答える