Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^2: Currency symbols in variable names

by pme (Prior)
on Aug 25, 2019 at 11:39 UTC ( #11104981=note: print w/replies, xml ) Need Help??


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

Hi 1nickt,

It seems to be that unicode characters can be in variable names if they are letters and currency symbols are not considered as letters.

my $愛 = 4; # correct

my $s = '★'; # correct

my $★ = 'star'; # incorrect

However, it makes sense. What could we do with this?

sub $_to_ { ... }
Update: This one works ...

my $元 = 3;

Replies are listed 'Best First'.
Re^3: Currency symbols in variable names
by 1nickt (Abbot) on Aug 25, 2019 at 14:33 UTC

    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.
      I wanted to say that currency symbol are not allowed in names because $ is a sigil too.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11104981]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (9)
As of 2019-12-06 12:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Strict and warnings: which comes first?



    Results (155 votes). Check out past polls.

    Notices?