Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re^3: how to speed lookups?

by ikegami (Pope)
on Nov 12, 2008 at 19:39 UTC ( #723275=note: print w/replies, xml ) Need Help??

in reply to Re^2: how to speed lookups?
in thread how to speed lookups?

While the OP mentions fetching the first field, you'll notice the OP used $fields[1], not $fields[0]. I believe that means he's using split to parse a single-quoted string. That's not what I'd call an appropriate use of split.

So in this case, the optimal split would be

my $searchfield = ( split /'/, $line, 3 )[1];

Using split requires matching twice, creating three variables and copying the entire string.

my ($searchfield) = $line =~ /^'([^']*)/;

Using the match operator requires matching once, creating one variable and copying only the field. Actual performance aside, it's definitely a cleaner process.

Finally, split will be very bad at handling escaping when the OP discovers the need for it.

maybe ([...]) even simply if a specific number of items are assigned

An operand doesn't know what the caller will do with the returned list, so your "maybe" doesn't apply. If it behaves as you think, the following snippet will result in $c being assigned 2 when it should be assigned 3.

$c = ($f1,$f2) = (4,5,6);

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (9)
As of 2021-04-12 18:26 GMT
Find Nodes?
    Voting Booth?

    No recent polls found