#!/usr/bin/perl use warnings; use strict; my @a = ("12;;654;Test;12345;Test", "13;;265;Test;12345;Test"); foreach my $line (@a) { chomp($line); my @b = split(";", $line); foreach my $i (@b) { if ($i eq "") { # Assigning a value to $i here changes @b too: $i = "000000"; } # isdigit?: if ($i !~ /\D/) { $i = sprintf("%06d", $i); } } print join(";", @b) . "\n"; }