用Perl语言传递命令行参数

时间:2015-05-28 11:04:46

标签: perl

我在分配命令行参数时遇到了麻烦。我想仅在命令行提供源路径和目标路径。

例如

.sticky{
    position:fixed;
    top:0;
    left:0;
    width:100%;
    display:block;
}

我的代码在

下面
perl Test.pl /Desktop/Perl_Scripts/Task/ /Desktop/Perl_Scripts/New folder/

3 个答案:

答案 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转换(取决于范围)。如果移位的值未定义,则脚本将死亡。