我可以访问 mac os x automator 中的 __DATA__ 部分吗

Can I access __DATA__ section in mac os x automator

我正在尝试在 运行 inside automator 的 perl 脚本中使用 __DATA__ 部分。

当 运行 作为 shell 脚本时一切正常,但在 automator 内部数据部分看起来是空的。

关于原因的任何想法,以及比拥有巨大的 "here" 文件更好的解决方法?

编辑

示例脚本

use strict;
use warnings;
while(<DATA>){
    print $_;
}
__DATA__
line1
line2
line3

Automator.app

运行您的脚本
/usr/bin/perl -e 'your script here' --

因此 __DATA__ 句柄不起作用。


编辑如何确定

  • Automator.app 根据定义 /usr/bin/perl 运行,因此:
  • /usr/bin/perl 重命名为 /usr/bin/perl_ORIG
  • 在其位置添加了另一个 perl 脚本(其他 perl),+ chmod 755
#!/opt/local/bin/perl
use strict;
use warnings;

my $n = 0;
print "[=11=]\n";
for my $arg (@ARGV) {
        print "$n:[$arg]\n";
        $n++;
}
  • 在 Automator 中运行原始脚本
  • 在输出中,伪造的 "perl" 准确显示了 --
  • 之前的所有参数

不太好(也不正确)- 但有助于发现 Automator 如何运行脚本,例如它使用 -e(小写)、script content + --.

此外,Automator 中的 tell DATA returns 0,在普通脚本中它 return 文件中的真实位置。 (见 Borodin 的评论)