I can fix this by closing the old file handle and checking the new one, but that seems like way to much work at the user level.
quietly { my $limit = 5; for lines() { state $lines = 1; FIRST { $*ARGFILES.on-switch = { put "NEW FILE"; $lines = 1 } } if $lines > $limit { $*ARGFILES.next-handle.close; last unless $*ARGFILES.opened; next; } put "{$*ARGFILES.path}:{$lines++} $_"; } }