Raku में पर्ल के <> के लिए वैकल्पिक?


11

यहाँ रकु (नी पेर्ल 6) के आसपास मेरा तरीका सीखना, बहुत अच्छा है। लेकिन मैं जादू <>को पर्ल 5 से याद करता हूं , जहां आप बस कर सकते हैं:

my $x = <>;
print $x;
while(<>) {
  print join(':', split);
}

(अगली इनपुट लाइन में पढ़ें $x, शेष पर लूप; इनपुट इनपुट या मानक इनपुट के रूप में नामित फ़ाइलों से है यदि कोई फ़ाइल नहीं दी गई है)। "पर्ल 5 से 6" ट्यूटोरियल / माइग्रेशन गाइड / ... बस slurpसंपूर्ण फ़ाइल को आईएनजी के बारे में बात करते हैं, या openव्यक्तिगत फ़ाइलों को नाम से जोड़ते हैं। कोई जादू "अनुक्रम में नामित फ़ाइलों से इनपुट लें" मुझे मिल सकता है।

मुझे जादू वापस चाहिए!

जवाबों:


17

आप जिस कार्यक्षमता की तलाश कर रहे हैं वह काफी हद तक मौजूद है। यह स्क्रिप्ट:

my $x = get();
say "First: $x";
for lines() {
    .say
}

इन इनपुट फ़ाइलों को देखते हुए:

$ cat foo
foo line 1
foo line 2
$ cat bar
bar line 1
bar line 2

जब, के रूप में आमंत्रित किया जाएगा:

raku script.p6 foo bar

उत्पादन का उत्पादन:

First: foo line 1
foo line 2
bar line 1
bar line 2

$*INअगर फाइल नहीं है तो यह आउटपुट भी लेगा । केवल एक चीज जो अस्तित्व में नहीं है <>, उसके लिए एक एकल प्रतिस्थापन है , क्योंकि यह उसी wantarrayतरह की कार्यक्षमता पर निर्भर करेगा , जो कई प्रेषण के साथ असंगत है (और राकु का मानना ​​है कि कई प्रेषण कहीं अधिक उपयोगी है)।

शून्य- arg उम्मीदवारों के लिए getऔर एक फ़ाइल हैंडल के संदर्भ मेंlines कार्यान्वित किया जाता है$*ARGFILES , जो फाइलों को तर्क सूची से लेने की कार्यक्षमता प्रदान करता है या $*IN- जिसका अर्थ है कि वह किसी भी कोड को पास कर सकता है जो फ़ाइल हैंडल की अपेक्षा करता है।


1
या, पैदल ;-)
p6steve

0

आप के लिए पर्याप्त जादू?

sub MAIN( Str $file where *.IO.f  )
{
    .say for $file.IO.lines.map: *.comb.join(':');
}

2
यह अच्छा है, और ओपी को इसकी कोशिश करनी चाहिए, लेकिन यह कुछ मायनों में समान नहीं है। <>व्यवहार के अनुकरण के लिए jnthn का उत्तर देखें , और ध्यान दें कि .combबिना तर्क के raku व्यक्तिगत पात्रों में एक स्ट्रिंग को विभाजित करता है, जबकि पर्ल का splitतर्क के बिना, .split(/\s+/)raku में afaik है ।
raiph

इसके लिए एक विकल्प .splitहोगा .words- docs.perl6.org/type/Str#routine_words
डोनाल्ड

1
क्यों, पवित्र rngesus द्वारा, मैं wordsविधि के बारे में भूल रहा हूँ ?
होली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.