[英]How to get the file from the directory using command line arguments using perl?
我试图获取具有文件夹名称(即pro)和位置(即“ /c/lol/ap/a/ds/crent/stup/pjects/DEMO/mfile.txt”)的文件并运行脚本(即perl readfile)。 pl)使用命令行参数。所以我自己尝试了以下示例脚本。但是我觉得我的脚本是完全错误的,谁能帮助我找到正确的方法。
示例脚本:(perl readfile.pl)
use strict;
use warnings;
use Getopt::Long qw(GetOptions);
my $pro;
my $mfile;
my $odir;
GetOptions('pro' => \$pro) or die "Usage: $0 --pro\n";
GetOptions('mfile' =>\$mfile) or die "Usage:$0 --mfile\n";
GetOptions('odir' =>\$odir) or die "Usage:$0 --odir\n";
print $pro ? 'pro' : 'no pro';
错误:
Unknown option: mfile
Unknown option: odir
Usage: readfile.pl --pro
要运行命令行,如下所示:
我应该创建脚本来如下运行命令行。
perl readfile.pl -pro “pr1” -mfile “/c/lol/ap/a/ds/crent/stup/pjects/DEMO/mfile.txt” -odir “/home/html_files”
不确定您要在这里实现什么,但是您对GetOptions
的使用是错误的。 如果您调用它,它将尝试处理所有命令行选项,而不仅仅是一个。 因此,在第一次调用GetOption
未定义的所有内容最终都会在末尾触发or die ...
部分并停止程序,从而产生用法消息。 请查阅PerlDoc以获得一些有用的示例。
您还必须在命令行调用中使用两个连字符作为选项,以使其起作用...
调用GetOptions('pro' => \\$pro)
-pro
以外的所有其他选项视为无效,因此您必须在一个调用中处理所有可能的命令行选项
由于您的选项具有字符串值,因此您还需要在选项名称后附加=s
看起来像这样
use strict;
use warnings 'all';
use Getopt::Long 'GetOptions';
GetOptions(
'pro=s' => \my $pro,
'mfile=s' => \my $mfile,
'odir=s' => \my $odir,
);
print $pro ? "pro = $pro\n" : "no pro\n";
print $mfile ? "mfile = $mfile\n" : "no mfile\n";
print $odir ? "odir = $odir\n" : "no odir\n";
pro = pr1
mfile = /c/lol/ap/a/ds/crent/stup/pjects/DEMO/mfile.txt
odir = /home/html_files
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.