当前位置:  开发笔记 > 编程语言 > 正文

我可以在shebang线上使用带/ bin/env的perl开关吗?

如何解决《我可以在shebang线上使用带/bin/env的perl开关吗?》经验,为你挑选了3个好方法。

我想继续perl -w使用env.这在命令行上运行正常:

$ /bin/env perl -we 'print "Hello, world!\n"'
Hello, world!

但它不适用于脚本中的shebang行:

#!/bin/env perl -w
print "Hello, world!\n";

这是错误:

/bin/env: perl -w: No such file or directory

显然env不明白-w我要传递的旗帜perl.怎么了?



1> Douglas Leed..:

hash-bang不是普通的shell命令行,解析和空白处理是不同的 - 这就是你所遇到的.看到:

http://www.in-ulm.de/~mascheck/various/shebang/

http://homepages.cwi.nl/~aeb/std/hashexclam-1.html#ss1.3

http://en.wikipedia.org/wiki/Shebang_(Unix)

基本上,许多/大多数unix将第一个空格之后的所有剩余文本放入一个参数中.

所以:

#!/bin/env perl -w

相当于:

/bin/env "perl -w"

所以你需要以其他方式处理perl解释器的任何选项.即

use warnings;

(作为@ Telemachus)



2> Telemachus..:

而不是-w使用警告pragma(对于现代版本的Perl):

#!/bin/env perl
use warnings;
use strict;



3> 小智..:

我认为提出"-w"与"使用警告"不同可能是有用的.-w将适用于您使用的所有包,"使用警告"仅适用于词法.您通常不想使用或依赖"-w"

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有