This and other RFCs are available on the web at http://dev.perl.org/rfc/ =head1 TITLE List context return from filesystem functions =head1 VERSION Maintainer: Peter Scott <[EMAIL PROTECTED]> Date: 6 Aug 2000 Last Modified: 29 Aug 2000 Mailing List: [EMAIL PROTECTED] Version: 2 Number: 52 Status: Frozen =head1 ABSTRACT C<chmod>, C<chown>, and C<unlink> return the I<number> of successfully affected files. I suggest that in a list context, they return the I<names> of the I<unsuccessfully> affected files. Add C<rmdir> to that list as well, since although it currently only takes one directory name as input, there is no reason it shouldn't take a list. =head1 DESCRIPTION In a scalar context, the result should remain the same as it is now. It is very tempting to make the list context return be the I<successfully> altered files, which is far more intuitive given the scalar context behavior; but that is almost certainly not the list the user will be interested in and they'd just end up doing the C<grep> suggested in the docs (Camel III) anyway, which calls the filesystem function once for each file. =head2 Hash Context When the result is assigned to a hash, the list returned could be the names of the unsuccessfully modified files and their corresponding C<$!> errors. =head1 IMPLEMENTATION Examples of use: # Current behavior: scalar context chmod 755, grep -d, glob '*' or die "Couldn't chmod dirs" # List context behavior warn "Unable to modify $_" for chown $uid, $gid, @files; # Hash context behavior %error = rmdir grep -d, glob '*'; warn "Couldn't remove $_: $error{$_}" for keys %error; It would be nice to include C<mkdir> in this list as well, but there appears to be no way of doing that without radically changing its interface, or forcing the I<MASK> argument to be included, or interpreting an initial argument that looks like a I<MASK> to be one. None of those appeal. =head1 REFERENCES L<perlfunc> Camel III function list (the entry for C<chmod> is different from the one in perl-current at the moment).
