use strict; use warnings; my ($A, $B, $C, $D); while () { chomp; my @parts = split /\|/; print "\$$parts[0] = $parts[1]\n"; eval("\$$parts[0] = $parts[1]"); } print "$A\n"; print "$B\n"; print "$C\n"; print "$D\n"; __DATA__ A|-10 B|20_000 C|20.1234 D|2E-3