what does the double forward slash mean here?

perl

Solution

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)`.

Problem

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!'; ```

Original source