为什么我会得到Can';“找不到字符串终止符”'&引用;在Windows上运行Perl one liner时出错
我想从perl一行程序中打印昨天的日期,当我在命令提示符下运行它时,我得到以下错误为什么我会得到Can';“找不到字符串终止符”'&引用;在Windows上运行Perl one liner时出错,windows,perl,Windows,Perl,我想从perl一行程序中打印昨天的日期,当我在命令提示符下运行它时,我得到以下错误 perl -e 'use POSIX qw(strftime); $now_string = strftime "%Y%m%d", localtime(time()-86400); print $now_string'; 错误: Can't find string terminator "'" anywhere before EOF at -e line 1. 我的pe
perl -e 'use POSIX qw(strftime);
$now_string = strftime "%Y%m%d", localtime(time()-86400);
print $now_string';
错误:
Can't find string terminator "'" anywhere before EOF at -e line 1.
我的perl版本v5.14.2不幸的是,在Windows命令行上,必须使用双引号:
perl -e "..."
如果您正在运行的命令需要在内部引用,请使用'
或qq{}
perl -e "print qq{Hello Windows\n}"
不幸的是,在Windows命令行中,必须使用双引号:
perl -e "..."
如果您正在运行的命令需要在内部引用,请使用'
或qq{}
perl -e "print qq{Hello Windows\n}"
两个问题:
“
)对于Windows命令shell来说没有意义。参数使用双引号(“
)引用
如果需要双引号字符串文字(例如,“\n”
)在参数中需要双引号,则可以使用qq{…}
(qq{\n}
)perl -MDateTime -E"say
DateTime->now(time_zone=>'local')->set_time_zone('floating')
->subtract(days=>1)->strftime('%Y%m%d')"
不过,您必须将其全部放在一行中,因为Windows命令shell在其参数中不支持换行符”
)对Windows命令shell没有意义。参数使用双引号(“
)引用
如果需要双引号字符串文字(例如,“\n”
)在参数中需要双引号,则可以使用qq{…}
(qq{\n}
)perl -MDateTime -E"say
DateTime->now(time_zone=>'local')->set_time_zone('floating')
->subtract(days=>1)->strftime('%Y%m%d')"
不过,您必须将其全部放在一行中,因为Windows命令shell在其参数中不支持换行符尾随分号是不必要的。从未见过包含3行的一行代码。:-)@编辑Francisco Zarabozo为了可读性增加了换行符。后面的分号是不必要的。从未见过一行有3行的代码。:-)@编辑Francisco Zarabozo为了可读性增加了换行符。谢谢。。我需要安装datetime模块,我会试试。实际上我喜欢把
“\n”
看作qq”\n“
的快捷方式。与'
和q'
相同。谢谢。。我需要安装datetime模块,我会试试。实际上我喜欢把“\n”
看作qq”\n“
的快捷方式。与'
和q'
相同。