#!/usr/bin/env perl
use strict;
use warnings;
use Benchmark 'cmpthese';
cmpthese(-30, {
loop => \&loop,
assign => \&assign,
});
my $BUFFER;
sub loop {
$BUFFER .= '12345';
say $BUFFER while parse(\$BUFFER);
}
sub assign {
my $buffer = \($BUFFER .= '12345');
1 while parse($buffer);
}
sub parse {
my $buffer = shift;
return substr ${$buffer}, 0, 1, '';
}