1

mapPerlの関数の出力を文字列変数に連結したいと思います。ただし、これを試してみると:

$body .= map {"$_\n"} sort(@{$hash{$server}->{VALID}});

$body の値は、期待値ではなく 3 です。

ユーザー1
ユーザー2
ユーザー3

私が行った場合:

print map {"$_\n"} sort(@{$hash{$server}->{VALID}});

それは私が欲しいものを与えてくれます。

では、印刷マップ機能を模倣して body 変数に割り当てるにはどうすればよいでしょうか?

4

2 に答える 2

5

mapリストを別のリストに変換するために使用されるため、それが返されます。これはprint、関数がリストを受け取り、 (出力フィールドセパレーター)printの値で区切って出力するため、機能します。$,

リストを結合して文字列にしたい場合は、 を使用する必要がありますjoin

$body .= join "\n", sort(@{$hash{$server}->{VALID}});
于 2013-01-04T17:36:26.370 に答える
4

printによって返された配列を連結し、map項目を の値でインターリーブします$,printしたがって、動作をシミュレートするにはこれが必要です。

$body .= join $,, map {"$_\n"} sort(@{$hash{$server}->{VALID}});

printあなたの懸念がある限り、別の有効な可能性は次のとおりです。

print "$_\n" for sort(@{$hash{$server}->{VALID}});

または、Perl v5.10 機能を有効にすると、次のようになりますsay

say for sort(@{$hash{$server}->{VALID}});

連結のためにそれを推定する:

$body .= "$_\n" for sort(@{$hash{$server}->{VALID}});
于 2013-01-04T17:36:11.227 に答える