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!';
The double slashes allow you to comment your action scripts.
The double slash '//' means: this "leads to" or, is "followed by".... try out "?//.. x..."
Make sure to remember the following: The backslash (\) is mostly used in computing and isn't a punctuation mark. The forward slash (/) can be used in place of “or” in less formal writing. It's also used to write dates, fractions, abbreviations, and URLs.
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-styleor. In fact, it's exactly the same as||, except that it tests the left hand side's definedness instead of its truth. Thus,EXPR1 // EXPR2returns the value ofEXPR1if it's defined, otherwise, the value ofEXPR2is returned. (EXPR1is evaluated in scalar context,EXPR2in the context of//itself). Usually, this is the same result asdefined(EXPR1) ? EXPR1 : EXPR2(except that the ternary-operator form can be used as a lvalue, whileEXPR1 // EXPR2cannot, 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$aand$bis defined, usedefined($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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With