将 PWD 最后一个值分配给 perl 模块中的变量
Assigning PWD last value to variable in perl module
我想分配给 perl 模块中的变量 $run
并检查 if 条件。
基本上,$run
变量被分配了当前工作目录的最后一个值,并且在 if 条件下,如果 perl 脚本正在检查分配给变量 $run
的值
perl 模块代码脚本片段的一部分,其中发现了确切的问题。
ex.pm
-----
my $run = ${PWD##*/};
if ( ne $run)
{
die "[=10=] should be run in a $run directory.";
}
使用这段代码我遇到了编译问题。同样的事情如果直接有 if 条件与最后一个路径值硬编码它的工作良好 if ( ne '4')
.
编译问题消息
syntax error at bin/ex.pm line 44, near ")
{"
syntax error at bin/ex.pm line 49, near "$sitepath "
BEGIN not safe after errors--compilation aborted at bin/TestConstants.pm line 72.
Compilation failed in require at bin/ex1.pm line 13.
BEGIN failed--compilation aborted at bin/ex1.pm line 13.
Compilation failed in require at ./bin/test.pl line 26.
BEGIN failed--compilation aborted at ./bin/test.pl line 26 (#1)
(F) Probably means you had a syntax error. Common reasons include:
A keyword is misspelled.
A semicolon is missing.
A comma is missing.
An opening or closing parenthesis is missing.
An opening or closing brace is missing.
A closing quote is missing.
您不能在 Perl 中使用 bash 语法。
$run = ${PWD##*/};
右边是bash表示“删除最后一个斜线之前的所有内容”的方式,在 Perl 中写成
$run = $ENV{PWD} =~ s{.*/}{}r;
或
$run = substr $ENV{PWD}, 1 + rindex $ENV{PWD}, '/';
我想分配给 perl 模块中的变量 $run
并检查 if 条件。
基本上,$run
变量被分配了当前工作目录的最后一个值,并且在 if 条件下,如果 perl 脚本正在检查分配给变量 $run
perl 模块代码脚本片段的一部分,其中发现了确切的问题。
ex.pm
-----
my $run = ${PWD##*/};
if ( ne $run)
{
die "[=10=] should be run in a $run directory.";
}
使用这段代码我遇到了编译问题。同样的事情如果直接有 if 条件与最后一个路径值硬编码它的工作良好 if ( ne '4')
.
编译问题消息
syntax error at bin/ex.pm line 44, near ")
{"
syntax error at bin/ex.pm line 49, near "$sitepath "
BEGIN not safe after errors--compilation aborted at bin/TestConstants.pm line 72.
Compilation failed in require at bin/ex1.pm line 13.
BEGIN failed--compilation aborted at bin/ex1.pm line 13.
Compilation failed in require at ./bin/test.pl line 26.
BEGIN failed--compilation aborted at ./bin/test.pl line 26 (#1)
(F) Probably means you had a syntax error. Common reasons include:
A keyword is misspelled.
A semicolon is missing.
A comma is missing.
An opening or closing parenthesis is missing.
An opening or closing brace is missing.
A closing quote is missing.
您不能在 Perl 中使用 bash 语法。
$run = ${PWD##*/};
右边是bash表示“删除最后一个斜线之前的所有内容”的方式,在 Perl 中写成
$run = $ENV{PWD} =~ s{.*/}{}r;
或
$run = substr $ENV{PWD}, 1 + rindex $ENV{PWD}, '/';