use strict; use warnings; my $val1 = 5234; my @digits = split(//,$val1); my $string = join ('_',@digits); $string =~ s/_(\d)$/$1/ if @digits == 4; print $string, "\n"; #prints 5_2_34 # #$val1 5234 prints 5_2_34 #$val1 52 prints 5_2 #$val1 523 prints 5_2_3 #### for (qw(5234 523 52)) { print append($_ , '_'), "\n"; } sub append { my ($val, $character) = @_; my @digits = split(//,$val); my $string = join ($character,@digits); $string =~ s/$character(\d)$/$1/ if @digits >= 4; return $string; }