2017-01-09 1 views
6

글을 쓸 때 파일을 열려고하는데 printf을 사용하여 형식을 지정했지만 설명서와 현실이 일치하지 않는 것 같습니다. 내가 놓친 게 있니?perl6 IO :: Handle에 printf 메소드가 없거나 문서와 일치하지 않거나 무엇인가 놓쳤는가?

To exit type 'exit' or '^D' 
> my $fh=open "test", :w; 
IO::Handle<"test".IO>(opened, at octet 0) 
> $fh.printf: "test"; 
No such method 'printf' for invocant of type 'IO::Handle' 
    in block <unit> at <unknown file> line 1 

하지만 내 코드는 설명서에 따라 좋아 보인다

https://docs.perl6.org/routine/printf 

대단히 감사합니다!

답변

7

the docsprintf() 예는 나를 위해 작동하지 않습니다 중 하나

당신은 해결 방법으로 sprintf()를 사용할 수
~/p6_programs$ perl6 -v 
This is Rakudo version 2016.11 built on MoarVM version 2016.11 
implementing Perl 6.c. 

~/p6_programs$ cat 4.pl6 
my $fh = open 'outfile.txt', :w; 
$fh.printf: "The value is %d\n", 32; 
$fh.close; 

~/p6_programs$ perl6 4.pl6 
No such method 'printf' for invocant of type 'IO::Handle' 
    in block <unit> at 4.pl6 line 3 

:

my $fh = open 'outfile.txt', :w; 
$fh.say: sprintf "The value is %d", 32; 
$fh.close; 

또는 fmt() : 분명히

my $fh = open 'outfile.txt', :w; 
$fh.say: 32.fmt("The value is %d"); 
$fh.close; 
+1

대단히 감사합니다! sprintf 해결 방법을 사용하겠습니다. – lisprogtor

8

IO::Handle.printfNov 27, 2016에 추가되었으며 Rakudo 2016.11은 Nov 19에 태그되었습니다. 내 생각에 너의 Rakudo는 그보다 나이가 많아.

+0

감사! 나는 11 월 버전을 사용하고있다 : perl6 -v 이것은 MouVM 버전 2016.11에 구축 된 Rakudo 버전 2016.11 Perl 6.c.을 구현 한 것이다. – lisprogtor

관련 문제