带有库函数的 Perl 脚本不产生输出

Perl script with library function produces no output

我创建了这个小小的维护脚本来反转义 HTML 个实体。

use HTML::Entities;

use warnings;

while ( <> ) {
    decode_entities($_);
}

问题是,当我像这样通过 bash 进行管道传输时,它没有产生任何输出,

echo "&quot;a&quot;" | perl ../../tmp.pl

如果你想看到一些输出,你最好 print/say return 值:

use HTML::Entities;

use warnings;

while (<>) {
    print decode_entities($_);
}

由于在 void 上下文中,该函数会就地修改字符串,您可以很容易地将脚本转换为单行代码:

perl -MHTML::Entities -pe 'decode_entities($_)'

while (<>) 循环一样,-p 开关循环输入的每一行(标准输入或文件名参数),并添加 printcontinue 块中,在循环的每次迭代结束时 运行 一次。