2011-01-10 15 views
8

मैं बाहरी आदेश कैसे निष्पादित कर सकता हूं और पर्ल 6 में अपना आउटपुट कैप्चर कैसे कर सकता हूं?बाहरी कमांड को निष्पादित करने और perl6 में अपना आउटपुट कैप्चर करने के लिए कैसे करें?

Perl5 शैली बैक-टिक काम करने के लिए लग रहे हैं नहीं है:

> my $results = `ls`; 
Confused at line 1, near "my $results" 

Synopsis 16 दस्तावेजों रन विधि है, लेकिन इस stdout से उत्पादन के बजाय बाहर निकलें स्थिति देता है।

मैं राकुडो कार्यान्वयन (राकुडो-स्टार -2010.12) का उपयोग कर रहा हूं।

उत्तर

11

उपयोग qqx या qx बजाय, जैसे:

> my $results = qqx{ls}; 

लैरी वॉल answered एक मेलिंग सूची पर एक समान प्रश्न:

[...]

: क्या backtick प्रतिस्थापित करती हो या qx {}?

qqx [] या qq: x [] सटीक समतुल्य होगा। qx [] या q: x [] एकल-कोट अर्थशास्त्र के साथ समान होगा। (संभवतः उस उद्देश्य के लिए कोई बैकटिक के बाद से हम उपयोगकर्ता परिभाषित सामान के लिए ` आरक्षित कर रहे हैं, और क्योंकि बैकटिक को नेत्रहीन मुश्किल हो जाता है कई फोंट में एकल उद्धरण से बता सकते हैं।)

+0

मुझे प्रश्न पोस्ट करने से पहले जवाब मिला, लेकिन अगर यह दूसरों के लिए उपयोगी हो तो इसे पोस्ट किया गया। – mattbh

0

यह भी सुरक्षित रूप से किया जा सकता है out पैरामीटर के साथ run() का उपयोग कर (एक खोल बिना छुए):

my $proc = run 'ls', q!/tmp/"This" is an ugly name, isn't it?/!, :out; 
my $output = $proc.out.slurp-rest; 

अधिक जानकारी Proc class में उपलब्ध है।

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

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