what does the double forward slash mean here?

I'm new to Perl and came across this piece of code at work, I search for a while but did not find the answer. Can anyone help to explain its function in plain english? thanks.

my $abc = delete $args{ 'abc' } // croak 'some information!';

Answers


From this page here: http://perldoc.perl.org/perlop.html#Logical-Defined-Or

Although it has no direct equivalent in C, Perl's // operator is related to its C-style or. In fact, it's exactly the same as ||, except that it tests the left hand side's definedness instead of its truth. Thus, EXPR1 // EXPR2 returns the value of EXPR1 if it's defined, otherwise, the value of EXPR2 is returned. (EXPR1 is evaluated in scalar context, EXPR2 in the context of // itself). Usually, this is the same result as defined(EXPR1) ? EXPR1 : EXPR2 (except that the ternary-operator form can be used as a lvalue, while EXPR1 // EXPR2 cannot, and EXPR1 will only be evaluated once). This is very useful for providing default values for variables. If you actually want to test if at least one of $a and $b is defined, use defined($a // $b).


Check for Logical Defined-Or in perlop, it is similar to || but it checks for undef value (not false one).

Although it has no direct equivalent in C, Perl's // operator is related to its C-style or. In fact, it's exactly the same as ||, except that it tests the left hand side's definedness instead of its truth.

So in short,

my $abc = delete $args{ 'abc' } // croak 'some information!';

will croak when $args{ 'abc' } returns undef value.


Need Your Help

insert if not exists oracle

sql oracle oracle-sqldeveloper

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like:

select outgoing ip for curl request

php curl ip

I have a server with two different IPs. I need to send odd curl requests from first IP, and even from the second one. How can I select outgoing IP address?