$! is common enough that it shouldn't need comments, though?
If the argument is that people learning perl won't understand them, I'd disagree:
open my $fh, '
tends to be covered very early in most tutorials, and is also described in perldoc perlopentut. To some extent the same applies to $/, reading in paragraph mode or in fixed chunks is something that you encounter very early.
Writing shift; as shift(@_); doesn't seem like an improvement. Surely the same would apply to /.../ vs. $_ =~ /.../, or () around all function parameters, or indeed any of the other shortcuts the language offers? Rather than avoiding perl features because they might confuse newcomers, surely it makes more sense to write the best code you can, so that newcomers can learn from the Perl idioms that make the language so expressive?
I'd be surprised if using shift(@_) saved anyone time, given the amount of code already out there - including most tutorials and books - which already uses the 'my $var = shift;' idiom. Also, it seems that search results for "Perl shift(@_)" are not really any better than "Perl shift", at least according to Google.
If the documentation for shift() isn't sufficient then perhaps it'd help to submit a patch with better wording? The current (5.20) text doesn't go into much detail, maybe there's a better way to phrase it.
Also, not sure what you mean about performance regarding $_[0] vs. shift - the former tends to be faster, not slower?
Tom
]]>my $a = 2; say $a;]]>sub change_arg_0
{
$_[0] = 1;
}change_arg_0($a);
say $a;