@rem';这行在 pl2bat/perl2bat 中做什么?

问题描述 投票:0回答:1

以下代码摘自典型的pl2bat文件。
对于那些 pl2bat/perl2bat 文件,我可以理解“goto”和“#!”是什么意思。行做。

但是那行

';
中的两个字符
@rem ';
呢?

放两个字

';
有什么特别的用途吗?

;
是 perl 行分隔符。

但是那条线没有意义,因为

perl -x
已经确保它忽略了
#!perl

之前的行
perl -x -S %0 %*
goto endofperl
@rem ';
#! perl
#line 29
perl batch-file
1个回答
3
投票

它关闭了较早的报价。


pl2bat
实用程序转换

#!/usr/bin/perl
use v5.14;
say "Hi";

进入

@rem = '--*-Perl-*--
@set "ErrorLevel="
@if "%OS%" == "Windows_NT" @goto WinNT
@perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
@set ErrorLevel=%ErrorLevel%
@goto endofperl
:WinNT
@perl -x -S %0 %*
@set ErrorLevel=%ErrorLevel%
@if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" @goto endofperl
@if %ErrorLevel% == 9009 @echo You do not have Perl in your PATH.
@goto endofperl
@rem ';
#!/usr/bin/perl
#line 16
use v5.14;
say "Hi";
__END__
:endofperl
@set "ErrorLevel=" & @goto _undefined_label_ 2>NUL || @"%COMSPEC%" /d/c @exit %ErrorLevel%

如果作为批处理文件执行,它将最终执行

perl -x -S %0 %*
,这将告诉Perl从
#!
行开始执行。

但是将批处理文件直接传递给 Perl 也可以,因为它看到了

@rem = '...';
#!/usr/bin/perl
#line 16
use v5.14;
say "Hi";
__END__
© www.soinside.com 2019 - 2024. All rights reserved.