Perl 什么';“我的($h,@s)=@;`和'my($h,@s)=grep$'`

Perl 什么';“我的($h,@s)=@;`和'my($h,@s)=grep$'`,perl,grep,Perl,Grep,我在一本名为“High order Perl”的书中读到了这段代码,我不明白为什么要费心使用grep,但是如果我改为第一条语句,事情就开始出错了,有人能解释一下吗?谢谢 上下文:第6章和第5节中的代码 sub union { my ($h, @s) = grep $_, @_; return unless $h; return $h unless @s; node(head($h), promise { union(@s, tail($h)); }); } my($h,@s)

我在一本名为“High order Perl”的书中读到了这段代码,我不明白为什么要费心使用grep,但是如果我改为第一条语句,事情就开始出错了,有人能解释一下吗?谢谢

上下文:第6章和第5节中的代码

sub union {
my ($h, @s) = grep $_, @_;
  return unless $h;
  return $h unless @s;
  node(head($h), promise {
  union(@s, tail($h));
 });
}
my($h,@s)=@
获取数组
@
的第一个值并将其放入
$h
中,其余值放入
@s

my($h,@s)=grep$\uu
获取第一个真值并将其放入
$h
中,其余真值并将其放入
@s


perl中的真值不是空字符串“”、0或undef。

鉴于这两个语句之间的区别在于使用了
grep
函数,那么我建议阅读是获得问题答案的好地方

grep阻止列表

grep EXPR,列表

这在精神上与grep(1)及其应用程序类似,但并不相同 亲戚。特别是,它不限于使用常规的 表情

为列表的每个元素计算块或表达式(本地设置
$\
到每个元素),并返回由这些元素组成的列表值 表达式对其求值为true的元素。在标量中 返回表达式为真的次数


列表中有哪些值?你在谈论这本书的哪一部分?这将更容易用上下文来回答。Mark Jason Dominus称之为高阶Perl。你能指出那一页或那一章吗?这有点断章取义。你可以回答你的问题。