http://www.perlmonks.org?node_id=11104985


in reply to Re^2: Currency symbols in variable names
in thread Currency symbols in variable names

Hi again, I'm not sure whether What could we do with this? refers to the sub after the question, or the way Perl disallows certain characters in variable names. If the latter, I would suggest that independent of your variable naming issue, you consider extensibility of your program. There doesn't seem to be much advantage to a sub named $_to_ as compared to a more generic one that takes arguments:

use strict; use warnings; use Test::More; use Test::More::UTF8; # loads utf8.pm sub convert_currency { my %map = ( '$' => sub { $_[0] * 105.4 }, '$' => sub { $_[0] * 0.0095 }, '$' => sub { $_[0] * 0.89 }, '$' => sub { $_[0] * 1.12 }, ); my ($from, $to, $amount) = @_; my $converter = $map{"$from$to"}; return sprintf( '%.3f', $converter->($amount) ); } is( convert_currency('$', '', 5), '527.000', '$ -> ' ); is( convert_currency('', '$', 42.02), '47.062', ' -> $' ); is( convert_currency('$', '', 42.02), '37.398', '$ -> ' ); done_testing;
$ prove -v monks/11104981.pl monks/11104981.pl .. ok 1 - $ -> ok 2 - -> $ ok 3 - $ -> 1..3 ok All tests successful. Files=1, Tests=3, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.04 cusr + 0.00 csys = 0.06 CPU) Result: PASS

Hope this helps!


The way forward always starts with a minimal test.