use Test::More tests => 7; use strict; use warnings; use Iterator::Simple qw(:all); my $itr; { $_ = 'DUMMY'; list(igrep { $_ % 5 } [1..20]); is($_, 'DUMMY', 'preserve $_ value after igrep'); list(imap { $_ + 2 } [1..20]); is($_, 'DUMMY', 'preserve $_ value after imap'); $itr = ifilter [1 .. 20], sub { if($_ % 5 == 0) { return iter([1 .. $_]); #inflate } elsif($_ % 3 == 0) { return; #skip } else { return $_; } }; list($itr); is($_, 'DUMMY', 'preserve $_ value after ifilter'); list(izip(['dogs', 'cats', 'pigs'], ['bowow','mew','oink'])); is($_, 'DUMMY', 'preserve $_ value after izip'); list(ichain ['blah', 'bla', 'bl'], ['foo', 'bar', 'baz']); is($_, 'DUMMY', 'preserve $_ value after ichain'); list(ienumerate(['foo','bar','baz'])); is($_, 'DUMMY', 'preserve $_ value after ienumerate'); list(islice([1..100], 3, 20, 2)); is($_, 'DUMMY', 'preserve $_ value after islice'); }