use Stream qw/node drop list_to_stream/; my @tokens = ( node( OP => '+' ), node( VAR => 'x' ), node( VAL => 3 ) ); my $stream = list_to_stream(@tokens); use Data::Dumper::Simple; while (my $node = drop($stream)) { print Dumper($node, $stream); }