在Windows上处理Perl相关的事情时,我尽量使用通用引号以避免出现倾斜牙签综合症。对于DOS需要的内容,我会保留引号:
perl -e "print scalar localtime() . qq(\n)"
如果你只需要在打印结束时换行,可以使用 -l
开关来实现:
perl -le "print scalar localtime()"
要了解关于开关的其他有趣用法,请参阅perlrun文档。
perl -e "print localtime() . qq(\n)"
perl -e "print localtime() . $/"
perl -le "print ''.localtime()"
如果您拥有Perl 5.10或更高版本:
perl -E "say scalar localtime()"
对于Windows NT+下的一般批处理文件,^字符可以转义很多字符(<>|&),但是对于引号,将其加倍可以奏效:
C:\>perl -e "print localtime() . ""\n"""
Thu Oct 2 09:17:32 2008
perl -e "print localtime();"
首先,对于这个问题的任何答案都是特定于命令的,因为DOS shell不像uniq一样解析命令行;它将整个未解析的字符串传递给命令,命令进行任何分割。话虽如此,如果使用/subsystem:console,则C运行时会在调用main()之前提供拆分,并且大多数命令都使用此选项。
如果应用程序正在使用此拆分,则输入一个双引号的方法是将其加倍。所以你会这样做
perl -e "print localtime() . ""\n"""