如何在同一行中执行嵌套的Perl命令

时间:2015-09-08 16:10:21

标签: perl

我是perl的新手,是否可以在单行中编写嵌套的perl命令,如下所示(shell)

echo "I am  `uname -n` and today is `date`"

我试过以下;但没有工作

my $i=0 ;
print "$i++\n" ;
print "localtime()" ;

2 个答案:

答案 0 :(得分:4)

您只能将变量插入到双引号字符串中。但这些变量可以是匿名的,允许您提供表达式来生成它们。这看起来像这样:

my $i = 0;
print "Number ${\($i++)} date ${\scalar localtime}";

您也可以使用@{[ some-expression ]}代替${\ some-expression }。在任何一种情况下,您都有一个表达式并且您创建了对其值的引用(或者在前一种情况下,创建了包含它的匿名数组),然后在字符串中取消引用它。表达式将在列表上下文中,因此您可能需要添加scalar,如上所述。

答案 1 :(得分:3)

  

是否可以在单行中编写嵌套的perl命令,如下(shell)

当然可以。

print "I am " . `uname -n` . "and today is " . `date`;

Perl的反引号运算符(`)在双引号("")内不起作用。所以,字符串"我是",uname -n的输出,字符串"今天是" date的输出由点运算符(.)连接。

我不明白你问题的后半部分对前一部分的意义(我认为你已经回答过了)。