1

文字列の最初の2つの名前だけが必要です。

my $myNames = "Jacob, Michael, Joshua, Matthew, Ethan, Andrew";

my $meNewNames = join ( ',',splice( split(/,/,$myNames), 0, 2));

何か問題があれば修正してください。そうしないと、別の方法で達成できます。

print "$meNewNames\n";

エラーをスローします。スプライスする引数1のタイプは配列である必要があります(分割ではありません)

ありがとう。

4

3 に答える 3

3

エラーが示すように、最初の引数は配列でなければなりません。考えられる解決策:

my $meNewNames = join ( ',',splice( [ split(/,/,$myNames) ], 0, 2)); 

分割された戻り値から匿名配列参照を作成します。ただし、これはperlバージョン5.14以降でのみ機能します。あなたはこのようにもっと簡単にそれをすることができます:

my $meNewNames = join ( ',', (split(/,/,$myNames))[0,1] ); 

下付き文字を使用して、分割の最初の2つの値を取得します。このスタイルでは、次のようにすると読みやすくなります。

my @names = split /,\s*/, $myNames;
my $meNewNames = join ',', @names[0,1];
于 2013-02-04T12:19:33.947 に答える
2

これはもっと簡単です:

my $meNewNames = join ( ',', (split(/,/,$myNames))[0,1] );

また、join/splitの代わりにregexprを使用できます。

$myNames =~ m!(\w+, *\w+)!;
# $1 => Jacob, Michael;
于 2013-02-04T12:22:12.317 に答える
1

に匿名リストを与えてsplitいますが、実際には実際の配列が必要です。これを修正する1つの方法は次のとおりです。

   my @array = split(/,/,$myNames);
   my $meNewNames = join ( ',',splice( @array, 0, 2));
于 2013-02-04T12:21:09.887 に答える