使用map从对象函数创建数组

5 perl map

我有一个数组HTML::Element从s的粘度HTML::TreeBuilderHTML::Element->find我需要他们的分配as_text值,其他一些变量.我知道我真的很容易做到

my ($var1, $var2) = ($arr[0]->as_text, $arr[1]->as_text);
Run Code Online (Sandbox Code Playgroud)

但我希望我可以使用map只是为了让代码更具可读性,因为数组中至少有8个元素.我是Perl的新手,所以我不太清楚该怎么做.

谁能指出我正确的方向?

Chr*_*utz 9

如果你精通perldoc -f map它很清楚:

my @as_texts = map { $_->as_text } @arr;
Run Code Online (Sandbox Code Playgroud)

如果要分配标量列表,也可以使用:

my($var1, $var2, $var3, ...) = map { $_->as_text } @arr;
Run Code Online (Sandbox Code Playgroud)

但是,对于未知数量的元素,阵列版本当然更好.

  • 这是个人偏好的一个主要问题,但是当变换很简单时,我更喜欢使用EXST形式的`map`:`map $ _-> as_text,@ arr`. (2认同)