如何正确运行Perl"one liner"命令行脚本?

Ric*_*ick 18 linux perl command-line

我已经浏览了一些教程,但我仍然无法弄清楚我做错了什么..我正在尝试下面的代码(在.pl Perl文件中,作为可执行文件):

#!/usr/bin/perl

perl -e 'print "Hello";' 
Run Code Online (Sandbox Code Playgroud)

我运行这个脚本并得到:

/home/user1/Desktop/file_backups.pl的执行因编译错误而中止.

(我是新手使用Perl调用Linux命令行.)

mik*_*iku 15

尝试:

#!/usr/bin/perl
# This is a comment ~~~
# This script will be run as a Perl script
# since 'perl' isn't a keyword or function in Perl
# something like this must fail:
#
# perl -e 'print "Hello";' 
#
# The following should work.

print "Hello"; print " World\n";
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望shell脚本执行Perl代码:

#!/bin/sh
# That's a Bash script ~~~
# It's just a command line in a file ...    

perl -e 'print "Hello World";' 
Run Code Online (Sandbox Code Playgroud)

背景:#!是一个解释指令.

执行该命令时,它将转换为执行解释程序.


Eth*_*her 13

perl在Perl脚本中不是有效命令.如果您将该文件命名为.sh脚本,并#!/bin/bash在shebang行上使用,那么它就可以工作了,但是编写一个bash文件只是为了调用Perl并不是很有意义(为什么不直接调用Perl ?)

由于您提到要与命令行进行交互,因此我在此提及您可以通过@ARGV数组获取Perl中的命令行选项.(见perldoc perlvar.)


Hen*_*sma 10

只需在命令行输入(不在文件中)

perl -e 'print "Hello World\n";'

这对oneliners来说真的很好.较长的脚本需要自己的文件...


Sla*_*lak 5

这应该工作。双引号外的单引号;)

perl -e "print 'Hello'"
Run Code Online (Sandbox Code Playgroud)