Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

how to get output

by dbashyam (Novice)
on Feb 18, 2014 at 05:02 UTC ( [id://1075260]=perlquestion: print w/replies, xml ) Need Help??

dbashyam has asked for the wisdom of the Perl Monks concerning the following question:

Hi Guys, I use the following code, I want to get the output as ORA-12505 in this scenario, but the number is dynamic, currently I am getting just numeric 1, how to get the output.

#!/usr/bin/perl my $org = ""; $Ora_code = 'Failed tthe following error: ORA-12505, TNS:listener does + not currently know of SID given in connect descriptor'; print $Ora_code; if ( my $out = $Ora_code =~ /ORA\-\d{5}/) { print "inside\n"; print "$out\n"; } else { print "(no match)\n"; }

Replies are listed 'Best First'.
Re: how to get output
by Util (Priest) on Feb 18, 2014 at 05:28 UTC

    Change:
        my $out = $Ora_code =~ /ORA\-\d{5}/
    to:
        my ($out) = $Ora_code =~ /(ORA\-\d{5})/
    .

    Adding the first set of parens causes $out to be treated as a one-element list. Without those parens, you have scalar context instead of list context; regex matches in scalar context return "truth" of the match instead of anything captured in the match. That Truth is represented as the "1" you are seeing.

    Adding the second set of parens declares what data should be captured when the regex is evaluated during the match.

      Hi, thanks for your reply. I did change now but still it prints output as '1', if you see my print statement I want to get the output as ORA-12505 in this scenario, but still not getting it right.

      #!/usr/bin/perl my $org = ""; $Ora_code = 'Failed tthe following error: ORA-12505, TNS:listener does + not currently know of SID given in connect descriptor'; print $Ora_code; if ( my ($out) = $Ora_code =~ /ORA\-\d{5}/) { print "inside\n"; print $out; } else { print "(no match)\n"; }

        As Util correctly mentioned, you need to enclose what you want captured within parentheses, so your regex should be:

        /(ORA\-\d{5})/

        Thanks for your help. I got it now

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (4)
As of 2024-03-29 10:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found