我是新來的perl。如何使用「或」運算符將多個值分配給變量?
我想說,一個變量可能需要2個值,然後我從另一個函數調用它。
我想:
my(@file) = <${dirname}/*.txt || ${dirname}/*.xml> ;
但這似乎不工作的第二個價值,有什麼建議?
我是新來的perl。如何使用「或」運算符將多個值分配給變量?
我想說,一個變量可能需要2個值,然後我從另一個函數調用它。
我想:
my(@file) = <${dirname}/*.txt || ${dirname}/*.xml> ;
但這似乎不工作的第二個價值,有什麼建議?
my(@file) = <${dirname}/*.txt>, <${dirname}/*.xml> ;
<>將它轉換爲一個文件名的數組,所以你基本上在做我的@file = @ array1,@ array2。這將首先遍歷txt文件,然後通過xml文件。
my (@file) = (<${dirname}/*.txt>, <${dirname}/*.xml>);
當使用<*>
運營商爲運營商fileglob,你可以使用任何常用的glob模式。可用模式是
*
(任意數量的任何字符),?
(任何單個字符),{a,b,c}
(任何a
,b
或c
圖案),所以你可以做
my @file = glob "$dirname/*.{txt,xml}";
或
my @file = (glob("$dirname/*.txt"), glob("$dirname/*.xml"));
或
my @file = glob "$dirname/*.txt $dirname/*.xml";
的水珠圖案的空白被分成子模式
使用匿名數組或哈希來完成任務? 'my @file =([(glob(「$ dirname/*。txt」))] [[glob(「$ dirname/*。xml」))])' – gaussblurinc 2013-04-30 12:38:20
如果我理解正確的,你想@files
退卻。如果第二個選項(*.xml
)沒有找到*.txt
文件。
如果是這樣,你的語法是接近的。它應該是:
my @files = <$dirname/*.txt> || <$dirname/*.xml>;
或
my @files = glob("$dirname/*.txt") || glob("$dirname/*.xml");
此外,這是一個好主意,檢查@files
,以確保它的填充(如果你沒有什麼任何*.txt
或*.xml
?)
warn 'No @files' unless @files;
這工作
my $file = $val1 || $val2;
它的意思是設置$文件$ VAL1,但如果$ VAL1爲0或虛假或民主基金,然後設置$文件1至$ VAL2
在本質上,圍繞一個變量< >
意味着要麼
1)把它當作一個文件句柄(例如$read=<$filehandle>
)
2)使用它作爲一個殼水珠(例如@files=<*.xml>
)像你想插值$目錄名稱,並添加任何.TXT或.xml上月底
在我看來。如果你希望兩個值發送到函數,那麼這可能是你想要
my @file=("$dirname.txt","$dirname.xml");
然後調用與@file的功能是什麼<>是不能達到這個
,即myfunction(@file)
在
sub myfunction {
my $file1=shift;
my $file2=shift;
所有這些東西是覆蓋在perldocs文檔功能perlsub和perldata
玩得開心
'glob「$ dirname/...」'是越野車。例如,對於其中包含空格的目錄會失敗。 – ikegami 2013-04-30 11:14:11
'<$ {dirname}/*。txt>,<$ {dirname}/*。xml>'也可以寫成'<$ {dirname}/*。{txt,xml}>' – ikegami 2013-04-30 11:15:09