从 Perl 脚本的命令行中提取作为参数给出的名称
Extracting the name given as an argument from command line in Perl script
我是脚本语言的新手,我有一个任务说我需要从 erl 命令行的给定参数中提取名称。
我这样调用 Perl 脚本
./perl.plx file.txt
我只需要得到那个 file
名字,而不是整个 file.txt
要获取文件名,您需要从 @ARGV
中提取文件名,并按点拆分。
my $fileName = (split /\./, $ARGV[0])[0];
解释:
split /\./, $ARGV[0]
在一个点上拆分(字符“.”是正则表达式中的一个特殊字符,它表示 'any character';要从字面上理解它,您需要对其进行转义,因此,/\./
).
(...)[0];
取第一个元素,即文件名。
Perl 脚本的命令行参数出现在 @ARGV
中,在 perldoc perlvar
中描述。
解析文件名看似微不足道,但外表可能会产生误导。然而,Perl 附带了一个名为 File::Basename
的模块,它可以处理您可能不会立即考虑的边缘情况。简单 split
无法处理的一种极端情况是,点可能出现在文件名中除最终后缀之外的其他地方。
您可以通过在命令提示符下键入 perldoc File::Basename
来查看 File::Basename
的文档。
这是一个例子:
use stict;
use warnings;
use File::Basename qw(fileparse);
my ($fname, $dirs, $suffix) = fileparse($ARGV[0], qr/\.txt/);
print "Base file name is $fname\n";
print "Suffix is $suffix\n";
print "Path to $fname$suffix is $dirs\n";
因为这个模块是 Perl 附带的,所以您不需要安装任何东西就可以使用它。在利用每个 Perl 发行版附带的核心 Perl 模块时,您可以利用这些工具中包含的最佳实践和调试。
我是脚本语言的新手,我有一个任务说我需要从 erl 命令行的给定参数中提取名称。
我这样调用 Perl 脚本
./perl.plx file.txt
我只需要得到那个 file
名字,而不是整个 file.txt
要获取文件名,您需要从 @ARGV
中提取文件名,并按点拆分。
my $fileName = (split /\./, $ARGV[0])[0];
解释:
split /\./, $ARGV[0]
在一个点上拆分(字符“.”是正则表达式中的一个特殊字符,它表示 'any character';要从字面上理解它,您需要对其进行转义,因此,/\./
).
(...)[0];
取第一个元素,即文件名。
Perl 脚本的命令行参数出现在 @ARGV
中,在 perldoc perlvar
中描述。
解析文件名看似微不足道,但外表可能会产生误导。然而,Perl 附带了一个名为 File::Basename
的模块,它可以处理您可能不会立即考虑的边缘情况。简单 split
无法处理的一种极端情况是,点可能出现在文件名中除最终后缀之外的其他地方。
您可以通过在命令提示符下键入 perldoc File::Basename
来查看 File::Basename
的文档。
这是一个例子:
use stict;
use warnings;
use File::Basename qw(fileparse);
my ($fname, $dirs, $suffix) = fileparse($ARGV[0], qr/\.txt/);
print "Base file name is $fname\n";
print "Suffix is $suffix\n";
print "Path to $fname$suffix is $dirs\n";
因为这个模块是 Perl 附带的,所以您不需要安装任何东西就可以使用它。在利用每个 Perl 发行版附带的核心 Perl 模块时,您可以利用这些工具中包含的最佳实践和调试。