ユニークについては、ジョブのツールはハッシュです。 1つのライナーとして
#!/usr/bin/env perl
use strict;
use warnings;
my $str = "bob-2-4 asdfasdfasdf bob-2-4 asdfasdf bob-3-1";
my %unique = map { $_ => 1 } $str =~ m/(bob-\d-\d)/g;
print keys %unique;
を、まっすぐにあなたの配列に、あなたはできます:あなたが行うことができます
my @unique = keys %{{map { $_ => 1 } $str =~ m/(bob-\d-\d)/g}};
これは、ほぼ同じことありません - ハッシュを構築するためにmap
を使用して、 keys
を使用して一意の値を抽出します。注 - keys
は、定義された注文を返しません。
順序が重要な場合、あなたはまた、grep
を使用することができますが、あなたはまだハッシュ必要があります:一般的に使用されるモジュールで
sub uniq { my %seen; grep !$seen{$_}++, @_ }
:
my $str = "bob-2-4 asdfasdfasdf bob-2-4 asdfasdf bob-3-1";
my %seen;
my @unique = grep { not $seen{$_}++ } $str =~ m/(bob-\d-\d)/g;
print @unique;
'perl -E 'grep {/^bob- \ d + - \ d + $/&&!$ s {$ _} ++} split" "、シフト" bob-2-4 asdfasdfasdf bob- 2-4 asdfasdf bob-3-1'' – Borodin
または(1行ではなく)配列を使用する場合は、 'my%s; $ str; ' – Borodin