my @f = ('%s', '%.2f', '%u','%d'); my @d = ('my string', '123456.54321' ,'1234.4321' , '1234'); my @D = map { sprintf($f[$LIST_INDEX], $_) } @d; print @D,"\n";