Fra*_*ank 17 scripting perl command-line system
我想继续perl -w使用env.这在命令行上运行正常:
$ /bin/env perl -we 'print "Hello, world!\n"'
Hello, world!
Run Code Online (Sandbox Code Playgroud)
但它不适用于脚本中的shebang行:
#!/bin/env perl -w
print "Hello, world!\n";
Run Code Online (Sandbox Code Playgroud)
这是错误:
/bin/env: perl -w: No such file or directory
Run Code Online (Sandbox Code Playgroud)
显然env不明白-w我要传递的旗帜perl.怎么了?
Dou*_*der 25
hash-bang不是普通的shell命令行,解析和空白处理是不同的 - 这就是你所遇到的.看到:
基本上,许多/大多数unix将第一个空格之后的所有剩余文本放入一个参数中.
所以:
#!/bin/env perl -w
Run Code Online (Sandbox Code Playgroud)
相当于:
/bin/env "perl -w"
Run Code Online (Sandbox Code Playgroud)
所以你需要以其他方式处理perl解释器的任何选项.即
use warnings;
Run Code Online (Sandbox Code Playgroud)
(作为@ Telemachus)
Tel*_*hus 16
而不是-w使用警告pragma(对于现代版本的Perl):
#!/bin/env perl
use warnings;
use strict;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4061 次 |
| 最近记录: |