亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

剛剛學perl,就遇到了GetOptions,請問下面代碼什么意思?

剛剛學perl,就遇到了GetOptions,請問下面代碼什么意思?

素胚勾勒不出你 2022-04-01 11:07:19
$gh_prog_opt{"spxml"} = "imirel_sp.xml";$gh_prog_opt{"relxml"} = "imirel.xml";$gh_prog_opt{"corexml"} = "imirel_core.xml";my $g_optcheck_success = GetOptions(\%$gh_prog_opt, qw(help|h relxml|r=s spxml|s=s corexml|c=s)); 這句話什么意思?
查看完整描述

1 回答

?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

GetOptions(\%gh_prog_opt, qw(help|h relxml|r=s spxml|s=s corexml|c=s));
可以讀入指定的命令行參數設置到gh_prog_opt散列中;-h等價于-help,相當于別名,類似的-r是-relxml的別名,-s是-spxml的別名,-c是-corexml的別名;=s表示要用等號再跟一個字符串值
類似的還有i表示需要整數值,f表示需要浮點數值,=(=s或=i等)表示該參數必須跟值,還有:(:s或:i等)表示該參數可以跟值,如果命令行沒有跟值,則設置為空字符串或數字0。
更詳細的用法可以在命令行中執行 perldoc Getopt::Long 查看(如果您英語好),或是上網查找GetOptions的用法。
另外,我感覺您程序中“GetOptions(\%$gh_prog_opt”可能多了個美元號。

以下是測試程序代碼,希望能幫助您理解GetOptions的用法:
use Getopt::Long;
use Data::Dumper;

$gh_prog_opt{"spxml"} = "imirel_sp.xml";
$gh_prog_opt{"relxml"} = "imirel.xml";
$gh_prog_opt{"corexml"} = "imirel_core.xml";

my $g_optcheck_success = GetOptions(\%gh_prog_opt, qw(help|h relxml|r=s spxml|s=s corexml|c=s));

print Dumper(\%gh_prog_opt);

保存以上代碼到文件 test.pl

若命令行執行 perl test.pl
輸出結果:
$VAR1 = {
'corexml' => 'imirel_core.xml',
'relxml' => 'imirel.xml',
'spxml' => 'imirel_sp.xml'
};
即表示初始默認值 $gh_prog_opt{"spxml"} = "imirel_sp.xml" 等

若命令行執行 perl test.pl -h
輸出結果:
$VAR1 = {
'corexml' => 'imirel_core.xml',
'relxml' => 'imirel.xml',
'spxml' => 'imirel_sp.xml',
'help' => 1
};
即增加了 $gh_prog_opt{"help"} = 1

若命令行執行 perl test.pl -h=2
輸出結果:
Option h does not take an argument
$VAR1 = {
'corexml' => 'imirel_core.xml',
'relxml' => 'imirel.xml',
'spxml' => 'imirel_sp.xml'
};
即-help參數不能再跟值,是個bool型參數

若命令行執行 perl test.pl -c
輸出結果:
Option c requires an argument
$VAR1 = {
'corexml' => 'imirel_core.xml',
'relxml' => 'imirel.xml',
'spxml' => 'imirel_sp.xml'
};
即-c(就是-corexml)參數需要跟一個字符串值

若命令行執行 perl test.pl -c=c_file
輸出結果:
$VAR1 = {
'corexml' => 'c_file',
'relxml' => 'imirel.xml',
'spxml' => 'imirel_sp.xml'
};
即設置了 $gh_prog_opt{"corexml"} = "c_file"

若命令行執行 perl test.pl -cor
輸出結果:
Option corexml requires an argument
$VAR1 = {
'corexml' => 'imirel_core.xml',
'relxml' => 'imirel.xml',
'spxml' => 'imirel_sp.xml'
};
即-corexml可以簡寫為-cor

若命令行執行 perl test.pl -cor=cor_file
輸出結果:
$VAR1 = {
'corexml' => 'cor_file',
'relxml' => 'imirel.xml',
'spxml' => 'imirel_sp.xml'
};

若命令行執行 perl test.pl -corexml=cor_file
輸出結果:
$VAR1 = {
'corexml' => 'cor_file',
'relxml' => 'imirel.xml',
'spxml' => 'imirel_sp.xml'
};

若命令行執行 perl test.pl -corexml2=cor_file
輸出結果:
Unknown option: corexml2
$VAR1 = {
'corexml' => 'imirel_core.xml',
'relxml' => 'imirel.xml',
'spxml' => 'imirel_sp.xml'
};
即不能識別-corexml2參數

若命令行執行 perl test.pl -c=1 -r=2 -s=3
輸出結果:
$VAR1 = {
'corexml' => '1',
'relxml' => '2',
'spxml' => '3'
};
即設置了 $gh_prog_opt{"corexml"} = "1" 等



查看完整回答
反對 回復 2022-04-06
  • 1 回答
  • 0 關注
  • 344 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號