Perl の関数によって出力されたリストの一部のみをキャプチャしたいと考えています。
これらの行だけで何かできると思ったのですが、そうではありません。
たとえば、リストの最後の要素をキャプチャします。
(, $my_var) = split(/_/,$sample_string);
たとえば、リストの 2 番目の要素をキャプチャします。
(, $my_var, , ,) = split(/_/,$sample_string);
これはPerlで可能ですか?
Perl の関数によって出力されたリストの一部のみをキャプチャしたいと考えています。
これらの行だけで何かできると思ったのですが、そうではありません。
たとえば、リストの最後の要素をキャプチャします。
(, $my_var) = split(/_/,$sample_string);
たとえば、リストの 2 番目の要素をキャプチャします。
(, $my_var, , ,) = split(/_/,$sample_string);
これはPerlで可能ですか?
undef
別の解決策:不要な要素を:に割り当てます。
(undef, $my_var) = split(/_/,$sample_string);
戻り配列の2番目の要素:
my $second_element = (split(/_/,$sample_string))[1];
アンダースコアを 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);