Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Hidden Secrets of PERL

by jbrugger (Parson)
on Oct 12, 2006 at 05:33 UTC ( #577752=note: print w/replies, xml ) Need Help??


in reply to Hidden Secrets of PERL

Not a real hidden secret, and mentioned on this site before: (however i use it, since it's save for my examle): the x operator.
have a look at the following example:
my $sql = join(",", @allsearchterms); my $sth = $dbh->prepare("select * from table where value in($sql)"); # You need to place qutes arount the sql-items, but you'll get the poi +nt here... $sth->execute();
As you know, this isn't safe (sql Piggybacking)
Now concider the next code example:
my $qm = join ',', ('?') x @allsearchterms; my $sth = $dbh->prepare("select * from table where value in($qm)"); $sth->execute(@allsearchterms);
As you see, a neat feature of Perl :)

Update:
code adjusted as suggested by Hue-Bond

"We all agree on the necessity of compromise. We just can't agree on when it's necessary to compromise." - Larry Wall.

Replies are listed 'Best First'.
Re^2: Hidden Secrets of PERL
by Hue-Bond (Priest) on Oct 12, 2006 at 10:24 UTC
    My $qm = '?,'x scalar(@allsearchterms);

    The argument at the right of x is in scalar context, so no need to call scalar. Besides it, you can use join to get rid of the chop:

    my $qm = join ',', ('?') x @allsearchterms;

    --
    David Serrano

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://577752]
help
Chatterbox?
[Corion]: Oooh - what a nice idea - QoS throttling on AWS, test enviroment runs fast, production also, until it doesn't
[Corion]: But then, you can just pay to make it fast again. Be a shame if it were to slow down, wouldn't it?

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (8)
As of 2017-07-26 18:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I came, I saw, I ...
























    Results (400 votes). Check out past polls.