Perl map函数输出分配给变量

ker*_*nic 1 perl map

我想将mapPerl中函数的输出连接到字符串变量.但是,如果我试试这个:

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

$ body的值等于3而不是预期值

user1
user2
user3

如果我做:

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

它给了我想要的东西.

那么我如何模仿打印地图功能并将其分配给body变量?

fri*_*edo 5

map用于将列表转换为另一个列表,这就是它返回的内容.这适用于print因为该print函数采用一个列表并将它们输出它们$,(输出字段分隔符)的值.

如果要将列表一起加入字符串,则必须使用join.

$body .= join "\n", sort(@{$hash{$server}->{VALID}});
Run Code Online (Sandbox Code Playgroud)