use strict; use warnings; # trivial variation on tybalt89's to retain # both odd and even one after the other my $sample = "041424344454647484940414"; my @allin = $sample =~ /(\d)(\d)/g; # more ordered output using subs in regex my @odds_vs_evens = (); $sample =~ s/(\d)(\d)/push(@odds_vs_evens,[$1,$2])/eg; print $_->[0].'->'.$_->[1]."\n" for @odds_vs_evens; #### 0->4 1->4 2->4 3->4 4->4 5->4 6->4 7->4 8->4 9->4 0->4 1->4 #### my $sample = "041424344454647484940414"; my %odds_vs_evens = $sample =~ /(\d)(\d)/g;