여기 Raku (neé Perl 6) 주위에서 내 길을 배우십시오. 그러나 나는 <>
Perl 5 의 마술 을 그리워합니다 .
my $x = <>;
print $x;
while(<>) {
print join(':', split);
}
(다음 입력 행을 읽고 $x
나머지를 반복하십시오. 입력은 파일이 없으면 입력 또는 표준 입력으로 이름이 지정된 파일에서 가져옵니다). “Perl 5 to 6″튜토리얼 / 마이그레이션 가이드 / … slurp
는 전체 파일 또는 open
개별 파일 이름에 대해 이야기 합니다 . 마술은 “명명 된 파일에서 순서대로 입력받지”않습니다.
나는 마법을 다시 원한다!
답변
찾고있는 기능은 대부분 존재합니다. 이 스크립트는 :
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
다중 디스패치와 호환되지 않는 유사한 기능에 의존하기 때문입니다. Raku는 다중 디스패치가 훨씬 더 유용하다고 생각합니다.
에 대한 제로, 인수 후보 get
와는 lines
구현 의 관점에서$*ARGFILES
인수 목록에서 또는에서 파일을 복용의 기능을 제공하는 파일 핸들, $*IN
하나는 파일 핸들을 기대 코드에 전달할 수있는 의미를 -.
답변
당신에게 충분한 마법?
sub MAIN( Str $file where *.IO.f )
{
.say for $file.IO.lines.map: *.comb.join(':');
}