如何在 strawberry perl 中获取最后执行的命令的值
how to get the value of last executed command in strawberry perl
我正在尝试执行一个简单的草莓 perl 脚本来复制文件,以从上次执行的命令中获取代码。但我在所有情况下都获得 0/成功。
来自我的 test.pl 脚本的代码
use File::Copy;
use strict;
use warnings;
my $source_file = "D:\abc\def\in\test\test1.csv";
my $target_file = "D:\abc\def\in\test\test2.csv";
if ( copy( $source_file, $target_file ) == 0 ) {
print "success";
}
else { print "fail"; }
由于我使用的路径 D:\abc\def\in\test\test1.csv
在机器上不存在,所以我预计会失败,但无论我提供什么我都会成功。
执行并输出如下:
D:\pet\common\bin\backup>perl test.pl
success
如果您查看 perldoc File::Copy
,您将看到以下内容:
RETURN
All functions return 1 on success, 0 on failure. $! will be set if an
error was encountered.
因此,如果出现错误,您的代码应该公开 $!
中的内容:
if ( copy($source_file, $target_file)) {
print "success\n";
}
else {
warn "fail: $!\n";
}
此外,如 File::Copy 的文档中所述,copy
returns 1
成功(真实值),所以我删除了您的 == 0
在测试成功。使用 Perl,if(COND){...}
语句中的任何真值都可以;您不需要显式测试 1
.
关于路径:/
字符可用作路径定界符,即使您使用 Windows 也可以,除非在某些情况下您可能将路径发送到外部程序。此功能允许您相对可移植地编写将路径表示为 foo/bar/baz
的代码,并且它将与 Windows 一起工作,类似于它在 *nix 操作系统下的工作方式。使用正斜杠作为分隔符可以避免转义路径中的每个反斜杠:foo\bar\baz
.
我正在尝试执行一个简单的草莓 perl 脚本来复制文件,以从上次执行的命令中获取代码。但我在所有情况下都获得 0/成功。
来自我的 test.pl 脚本的代码
use File::Copy;
use strict;
use warnings;
my $source_file = "D:\abc\def\in\test\test1.csv";
my $target_file = "D:\abc\def\in\test\test2.csv";
if ( copy( $source_file, $target_file ) == 0 ) {
print "success";
}
else { print "fail"; }
由于我使用的路径 D:\abc\def\in\test\test1.csv
在机器上不存在,所以我预计会失败,但无论我提供什么我都会成功。
执行并输出如下:
D:\pet\common\bin\backup>perl test.pl success
如果您查看 perldoc File::Copy
,您将看到以下内容:
RETURN
All functions return 1 on success, 0 on failure. $! will be set if an
error was encountered.
因此,如果出现错误,您的代码应该公开 $!
中的内容:
if ( copy($source_file, $target_file)) {
print "success\n";
}
else {
warn "fail: $!\n";
}
此外,如 File::Copy 的文档中所述,copy
returns 1
成功(真实值),所以我删除了您的 == 0
在测试成功。使用 Perl,if(COND){...}
语句中的任何真值都可以;您不需要显式测试 1
.
关于路径:/
字符可用作路径定界符,即使您使用 Windows 也可以,除非在某些情况下您可能将路径发送到外部程序。此功能允许您相对可移植地编写将路径表示为 foo/bar/baz
的代码,并且它将与 Windows 一起工作,类似于它在 *nix 操作系统下的工作方式。使用正斜杠作为分隔符可以避免转义路径中的每个反斜杠:foo\bar\baz
.