我在分配命令行参数时遇到了麻烦。我想仅在命令行提供源路径和目标路径。
例如
.sticky{
position:fixed;
top:0;
left:0;
width:100%;
display:block;
}
我的代码在
下面perl Test.pl /Desktop/Perl_Scripts/Task/ /Desktop/Perl_Scripts/New folder/
答案 0 :(得分:2)
在Perl中,命令行Arguments存储在@ARGV
中,其中
$ARGV[0]
包含第一个参数(不像在C中,其中argv[0]
是
命令)。
对你:
my $source_dir = $ARGV[0];
my $target_dir = $ARGV[1];
对于更复杂的选项,请使用Getopt::Long作为实际选项 选项。
答案 1 :(得分:0)
试试这个:
my ($source_dir, $target_dir) = @ARGV;
您可以从命令行传递参数:
perl Test.pl /Desktop/Perl_Scripts/Task/ /Desktop/Perl_Scripts/Newfolder/
如果文件夹或目录名称中有空格,只需使用双引号或转义空格:
perl Test.pl "/Desktop/Perl_Scripts/Task/" "/Desktop/Perl_Scripts/New folder/"
答案 2 :(得分:0)
我的Perl命令行参数解析例程是使用Getopt::Long
作为选项(不是你的情况)而这个代码用于其余部分:
my $source_dir = shift or die "You must supply the source directory";
my $dest_dir = shift or die "You must supply the destination directory";
我喜欢这个提法的威胁性声音。此外,您不必检查变量是否都已设置。
只是为了解释代码:shift
不带参数执行从$@
或@ARGV
转换(取决于范围)。如果移位的值未定义,则脚本将死亡。