कोड मैंने लिखा रूप में नीचे है:मेरी पर्ल मानचित्र सूची केवल 1 क्यों है?
#!/usr/bin/perl
my @input = ("a.txt" , "b.txt" , "c.txt") ;
my @output = map { $_ =~ s/\..*$// } @input ;
print @output ;
मेरे इरादा विस्तार सरणी @output
में संग्रहीत बिना फ़ाइल नाम देना है। लेकिन इसके बजाय यह नहीं बल्कि @output
में बदली हुई फ़ाइल नाम से s///
द्वारा दिए गए मान संग्रहीत करता है, तो परिणाम
1
1
1
तो इस स्थिति के तहत map
उपयोग करने के लिए सही तरीका क्या है की तरह लग रहा है?
@derobert: लापता 'एक संपादन त्रुटि है, मैंने इसे ठीक कर दिया है।और मैंने आपके समाधान का परीक्षण किया है और यह काम करता है! –
यह सुनकर खुशी हुई कि यह काम करता है। – derobert
सूची :: अधिक उपयोग http://search.cpan.org/perldoc/List::MoreUtils 'लागू' प्रदान करता है जो इस तरह की चीज़ के लिए बिल्कुल सही है। यह 'मानचित्र' की तरह काम करता है, लेकिन सरणी तर्क में मानों को परिवर्तित नहीं करेगा। 'सूची का उपयोग करें :: MoreUtils' लागू करें '; मेरा @output = लागू करें {s /\..*$//} @ इनपुट; ' – daotoad