2017-01-09 20 views
6

Biçimlendirme yapmak için bir dosya açmaya ve printf kullanmaya çalışıyorum, ancak belgelere ve gerçekliğe uymuyor gibi görünmüyor. Bir şey mi eksik?perl6 IO :: Sapta printf yöntemi yok, belgelere uymuyor mu, yoksa bir şey mi özledim?

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 

Ama benim kod belgelerine göre tamam görünüyor:

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

Çok teşekkür ederim !!

cevap

7

the docs yılında printf() örnek benim için çalışmıyor ya:

Bir çözüm olarak sprintf() kullanabilirsiniz
~/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; 

veya fmt(): Görünüşe

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

Çok teşekkür ederim! Sprintf çözümü kullanacağım. – lisprogtor

8

IO::Handle.printf, Nov 27, 2016'da eklenmiştir ve Rakudo 2016.11, Nov 19 adresinde etiketlenmiştir. Yani benim tahminim senin Rakudo'nun ondan daha büyük.

+0

Teşekkürler! Nov sürümünü kullanıyorum: perl6 -v Bu, Perl 6.c'yi uygulayan MoarVM sürüm 2016.11 üzerine kurulu olan Rakudo sürüm 2016.11'dir. – lisprogtor

İlgili konular