尝试这样做时:
my $obj = new JavaScript::Minifier;
$obj->minify(*STDIN, *STDOUT);
// modified above line to
$obj->minify(*IP_HANDLE,*OP_HANDLE)
如果IP_HANDLE和OP_HANDLE是文件句柄,则上述方法有效,但我仍然无法弄清楚*
在应用于文件句柄或任何其他数据类型时的实际作用。
谢谢,
答案 0 :(得分:25)
答案 1 :(得分:7)
*
引用Perl "typeglob",这是Perl的一个模糊的实现细节。一些较旧的Perl代码需要使用typeglobs引用文件句柄(因为当时没有任何其他方法可以执行此操作)。更现代的代码可以使用文件句柄引用,这样更容易使用。
*
类似于$
或%
,它指的是同名的不同类型的对象。
来自perldata
文档页面:
Perl使用名为typeglob的内部类型来保存整个符号表条目。 typeglob的类型前缀是*,因为它代表所有类型。这曾经是通过引用将数组和哈希值传递给函数的首选方法,但现在我们有了真正的引用,这很少需要。
答案 2 :(得分:2)
这是全球的印记。 *FOO
指的是名为“FOO”的glob,就像$FOO
指的是名为“FOO”的标量,依此类推。 Globs通常是代码引用或文件句柄。
您需要存在的sigil才能修改glob值,例如*name_of_sub = sub{};
,或者在不调用特殊语法的情况下获取其值,例如调用sub。