从Perl脚本中的命令行提取作为参数给出的名称

Vla*_*ski -4 bash shell perl command-line command-line-arguments

我是脚本语言的新手,我有一个任务,说我需要从erl命令行中的给定参数中提取名称.

我这样调用Perl脚本

./perl.plx file.txt
Run Code Online (Sandbox Code Playgroud)

我只需得到那个file名字,而不是整个名字file.txt

Dav*_*idO 5

Perl脚本的命令行参数出现在@ARGV,描述于perldoc perlvar.

解析文件名似乎微不足道,但外观可能会产生误导.但是,Perl附带了一个名为File::Basename处理您可能不会立即考虑的边缘情况的模块.简单split无法处理的一个边缘情况是除了最终后缀之外,点可能出现在文件名的其他位置.

您可以File::Basename通过perldoc 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";
Run Code Online (Sandbox Code Playgroud)

由于此模块附带Perl,因此您无需安装任何内容即可使用它.利用每个Perl发行版附带的核心Perl模块,您可以利用这些工具中包含的最佳实践和调试.