Converting letters to numbers

This is probably quite simple, but say I wanted to convert A-Z to 10-36.

Can I do this any way other than $string =~ s/A/10/i; , etc. ?

Thanks,
Nik
LVL 1
OKSDAsked:
Who is Participating?
 
ozoConnect With a Mentor Commented:
$_ = join' ','A'..'Z',"\n";
s/([A-Z])/ord($1)-ord('A')+10/eg;
print;
s/(\d\d)/chr($1+ord('A')-10)/eg;
print;
0
 
ozoCommented:
$string=~s/([A-Z])/10+ord($1)-ord('A')/eg;
0
 
OKSDAuthor Commented:
Ok, I'll try that, thanks. Could you explain a bit of that? I understand some of it, but what is +ord and -ord? and what is the 'e' appended at the end?
0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
OKSDAuthor Commented:
And how would you effect the opposite? i.e., numerical to text.

Thanks
0
 
ozoCommented:
perldoc -f ord
       ord EXPR
       ord     Returns the numeric (the native 8-bit encoding,
               like ASCII or EBCDIC, or Unicode) value of the
               first character of EXPR.  If EXPR is omitted, uses
               $_.

               For the reverse, see "chr".  See perlunicode and
               encoding for more about Unicode.

perldoc perlop
       s/PATTERN/REPLACEMENT/egimosx
 
           Options are:

                   e   Evaluate the right side as an expression.
                   g   Replace globally, i.e., all occurrences.
                   i   Do case-insensitive pattern matching.
                   m   Treat string as multiple lines.
                   o   Compile pattern only once.
                   s   Treat string as single line.
                   x   Use extended regular expressions.
0
 
ozoCommented:
s/(\d\d)/chr($1-10+ord('A'))/eg;
0
 
OKSDAuthor Commented:
Could you print an example of the reverse please?

Thanks
0
 
OKSDAuthor Commented:
Ok, works perfectly. Thank you very much! ;)

-Nik
0
All Courses

From novice to tech pro — start learning today.