# New Ticket Created by "brian d foy"
# Please include the string: [perl #132885]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/Ticket/Display.html?id=132885 >
#!/Users/brian/bin/perl6s/perl6-latest
I'm playing with .next-handle from IO::CatHandle. I'm
trying to create a situation where I can read just the first five
lines from each command line argument:
quietly {
my $limit = 5;
for lines() {
state $lines = 1;
FIRST { $*ARGFILES.on-switch = { put "NEW FILE"; $lines = 1 } }
if $lines > $limit {
$*ARGFILES.next-handle;
next;
}
put "{$*ARGFILES.path}:{$lines++} $_";
}
}
Here's a test file:
First
Second
Third
Fourth
Fifth
Six
Seventh
With one or more command-line arguments I get this odd behavior (and
lots of warnings that I suppressed):
test.txt:1 First
test.txt:2 Second
test.txt:3 Third
test.txt:4 Fourth
test.txt:5 Fifth
NEW FILE
:1 Seventh
read bytes requires an object with REPR MVMOSHandle (got VMNull
with REPR Null)
in block <unit> at lines-method.p6 line 5
It does "switch" after five lines, but then it keeps reading from the
same handle while losing a line. Then there's a strange error at the
end that kills the whole thing.
I expected that it would close the current handle, open a new one, and
continue. If it gets to the end, it would simply not provide any more
lines() and things would end normally.
The docs for .next-handle lets you keep changing it as long as you
like no matter how many
-----
This is Rakudo Star version 2018.01 built on MoarVM version 2018.01
implementing Perl 6.c.