2015-12-22 19 views
6

नीचे दिए गए कोड में, <*> कमांड क्या करता है?<*> पर पर्ल में क्या मतलब है?

my @usbHddFileList = <*>; 
foreach $usbHddFile (@usbHddFileList) 
{ 
    system("rm -f $curMountDir/$usbHddFile </dev/null> /dev/null 2>&1"); 
} 
+3

यह भी देखें [पर्ल फाइलनाम वाइल्डकार्ड कमांड के दो रूपों के बीच अंतर] (http://stackoverflow.com/questions/12115772/difference-between-two-forms-of-perl-filename-wildcard-command) –

+17

इसके अलावा: फ़ाइलों को हटाने के लिए 'सिस्टम ("आरएम ...") का उपयोग करना ** बेहद ** खराब रूप है, और सुरक्षा जोखिमों को लेता है (इसके नाम पर '$ (आरएम-आरएफ ~)' वाली फ़ाइल के बारे में सोचें)। इसके बजाय 'अनलिंक() 'का उपयोग करें। –

+0

पुन: '" शायद खोज इंजन विशेष पात्रों को पसंद नहीं करते हैं "' Google में आप परीक्षा के लिए विशेष वर्ण उद्धृत कर सकते हैं [यह Google खोज] (https://www.google.no/?gws_rd=ssl# q = perl +% 22-x% 22) फ़ाइल परीक्षण ऑपरेटर को तब तक नहीं मिला जब तक कि आप surronding quotes –

उत्तर

5
  • <> मतलब है readline(ARGV)
  • <IDENTIFIER>readline(IDENTIFIER)
  • <$IDENTIFIER> मतलब है readline($IDENTIFIER)
  • <...> (कुछ) का अर्थ है glob(qq<...>)

तो <*> मतलब हैका मतलबया glob('*')

glob पैटर्न से कई स्ट्रिंग या फ़ाइल नाम उत्पन्न करने के लिए उपयोग किया जाता है।

सूची संदर्भ में, <*> उर्फ ​​glob('*') रिटर्न उन जिसका नाम . साथ शुरू होता है के अलावा अन्य मौजूदा काम निर्देशिका में सभी फ़ाइलों।

9

यह glob है। perlop के अनुसार:

यदि कोण कोष्ठक के भीतर है है न तो एक filehandle और न ही एक सरल अदिश चर एक filehandle नाम वाले, typeglob, या typeglob संदर्भ में, यह एक फ़ाइल नाम पैटर्न के रूप में globbed होने की व्याख्या की है, और संदर्भ के आधार पर सूची में फ़ाइल नामों या अगले फ़ाइल नाम की सूची लौटा दी गई है। यह भेद अकेले वाक्य रचनात्मक आधार पर निर्धारित किया गया है।

+0

और ओपी के कोड में विशेष रूप से, यह वर्तमान कार्य निर्देशिका में सभी (गैर-डॉट) फ़ाइलों के नाम लौटाता है और उन्हें '@usbHddFileList' में संग्रहीत करता है '। – ThisSuitIsBlackNot

संबंधित मुद्दे