Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: Testing a string for a range of characters

by chromatic (Archbishop)
on Jan 25, 2001 at 09:46 UTC ( [id://54210]=note: print w/replies, xml ) Need Help??


in reply to Testing a string for a range of characters

I can't believe no one mentioned transliteration:

$test_char =~ tr/A-Z//c;

Talk about an underappreciated tool.

Replies are listed 'Best First'.
Re: Re: Testing a string for a range of characters
by BoredByPolitics (Scribe) on Jan 25, 2001 at 14:28 UTC
    I'm at home today, with a much slower machine (P166 64Mb, linux 2.2.18pre21, Perl 5.005_03), so I've reduced the number of iterations to a million.

    These benchmarks are also with the compl routine checking the length() of the test character first, and with the regex fixed -

    Benchmark: timing 1000000 iterations of compl, exist, regex, tr... compl: 17 wallclock secs (17.35 usr + 0.02 sys = 17.37 CPU) exist: 15 wallclock secs (14.02 usr + 0.01 sys = 14.03 CPU) regex: 18 wallclock secs (18.62 usr + 0.00 sys = 18.62 CPU) tr: 16 wallclock secs (16.67 usr + 0.01 sys = 16.68 CPU)

    So, faster than the regex, but still not as fast as the exist() method. Thanks for the suggestion though :-)

    Pete

Re: Re: Testing a string for a range of characters
by chipmunk (Parson) on Jan 25, 2001 at 21:02 UTC
    Here are two ways to use tr/// to get a complete solution to the problem, checking both the length and the contents of the string: length $test_char == 1 and $test_char =~ tr/A-Z//; $test_char =~ tr/A-Z// == 1 and $test_char =~ tr/A-Z//c == 0;

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (3)
As of 2024-04-20 05:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found