使用 IO::Tee 和 END 块之间的冲突

conflict between use IO::Tee & an END block

此脚本 IOTee.pl 报告 运行 花费了 0 秒:

#!/usr/bin/perl

use IO::Tee

# create a time check:
END { print "This Perl program ran for ", time() - $^T, " seconds.\n"}

但它也报告:

Can't locate object method "END" via package "1" (perhaps you forgot to load "1"?) at IOTee.pl line 6.
BEGIN failed--compilation aborted at IOTee.pl line 6.

- 为什么?

您忘记了 "use IO::Tee" 后的分号。

因此 END { print ... } 被用作要传递给 IO::Tee::import 的导入列表。这种语法就像 print { expression-giving-a-filehandle } output-stuff; {} 中的内容(即 1,因为这是一个成功的打印 returns)是一个调用 END 方法的对象。