It's possible to do, if you hook into the warning that gets tossed when a variable is only used once. For example:
#!/usr/bin/perl -w
use warnings;
BEGIN {
use Lingua::EN::Words2Nums;
$SIG{__WARN__} = sub {
if ($_[0] =~ /Name "(.*)" used only once/) {
my $var = $1;
my ($num) = $var =~ /::(\S+)/;
$num =~ tr/_/ /;
$$var = words2nums($num);
} else {
warn @_;
}
};
}
print $five + $seventeen, "\n";
However, this is firmly in the "sick trick" arena, rather than "maintable code." Heed the other monks' advice to look for better ways to go about this.
Update: Oh, yeah -- this obviously only works if you only refer to the variable once in your code. This may be more trouble than it is worth, obviously. It also won't catch things like $foo = "five"; print $$foo;