my @new_sn = get_new_numbers(1000, "10011902APWPA"); foreach(@new_sn){ print $_."\n"; } # A = 65 - Z = 90 sub get_new_numbers{ my $anzahl = shift; my $last_sn = shift; my @back_array; #print $last_sn."\n"; my ($mat, $last5); if( $last_sn =~ /(\w*)(\w{5})/ ) { $mat = $1; $last5 = $2; } my @c = split(//,$last5); foreach(@c){ $_ = ord($_); } foreach(1..$anzahl){ @c = reverse(@c); my $help_var = 0; foreach(@c){ ($help_var, $_) = count($_); last unless $help_var; } @c = reverse(@c); my $new_sn = $mat; foreach(@c){ $new_sn .= chr($_); } push(@back_array, $new_sn); } return @back_array; } sub count{ my $c_dec = shift; if( ++$c_dec > 90 ){ $c_dec = 65; return (1, $c_dec); } return (0, $c_dec); }