# 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.