Я могу создавать файловые дескрипторы для строк в Perl 5, как мне это сделать в Perl 6?
В Perl 5 я могу создать дескриптор файла для строки и читать или писать из строки, как если бы это был файл. Это отлично подходит для работы с тестами или шаблонами.
Например:
use v5.10; use strict; use warnings;
my $text = "A\nB\nC\n";
open(my $fh, '<', \$text);
while(my $line = readline($fh)){
print $line;
}
Как я могу сделать это в Perl 6? Следующиене работать для Perl 6 (по крайней мере, не для моего экземпляра Perl6, работающего наМоарВМ 2015.01 отЯнварь 2015 года выпуск Rakudo Star на 64-битном CentOS 6.5):
# Warning: This code does not work
use v6;
my $text = "A\nB\nC\n";
my $fh = $text;
while (my $line = $fh.get ) {
$line.say;
}
# Warning: Example of nonfunctional code
Я получаю сообщение об ошибке:
No such method 'get' for invocant of type 'Str'
in block <unit> at string_fh.p6:8
Не очень удивительно, что Perl5open(my $fh, '<', \$text)
не то же самое, что Perl6my $fh = $text;
, Итак, вопрос: как создать дескриптор виртуального файла из строки в Perl 6, напримерopen(my $fh, '<', \$str)
в Perl 5? Или это то, что еще не реализовано?
ОБНОВЛЕНИЕ (запись в файловый дескриптор в Perl 5)
Аналогично, вы можете писать в строковые дескрипторы файлов в Perl 5:
use v5.10; use strict; use warnings;
my $text = "";
open(my $fh, '>', \$text);
print $fh "A";
print $fh "B";
print $fh "C";
print "My string is '$text'\n";
Выходы:
My string is 'ABC'
Я еще не видел ничего подобного в Perl 6.