Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

perl chmod tells me file does not exist (but it does)

by davidfilmer (Novice)
on May 17, 2013 at 22:00 UTC ( #1034026=perlquestion: print w/ replies, xml ) Need Help??
davidfilmer has asked for the wisdom of the Perl Monks concerning the following question:

Hello. I have this code, which is an attempt to duplicate the permissions of one file onto another:
my $mode = (stat( $original_file ))[2]; my $perms = sprintf "%04o", $mode & 07777; chmod( $target_file, oct($perms) ) or warn "Could not chmod '$targe +t_file' to $perms: $!\n";
Perl warns me:
Could not chmod '/data/dmu/share/Product/PMprofile' to 0644: A file or + directory in the path name does not exist.
But it bloody well too does exist:
> ll /data/dmu/share/Product/PMprofile -rw-rw-rw- 1 dfilmer wheel 1015 Jun 19 2012 /data/dmu/sha +re/Product/PMprofile
I seek wisdom!!! Why does chmod not see my file? Thanks!

Comment on perl chmod tells me file does not exist (but it does)
Select or Download Code
Re: perl chmod tells me file does not exist (but it does)
by hippo (Curate) on May 17, 2013 at 22:06 UTC

    Perhaps because you have given the args to chmod in the wrong order?

Re: perl chmod tells me file does not exist (but it does)
by stephen (Priest) on May 17, 2013 at 22:07 UTC
    It should be:
    chmod( oct($perms), $target_file );

    stephen

      Holy crap - is it really that simple and that stupid? I got the args mixed up??? Gaaaa!!!! Thanks!!!!
Re: perl chmod tells me file does not exist (but it does)
by Anneq (Vicar) on May 17, 2013 at 22:30 UTC

    Sometimes your script may not be operating in the directory you think it is (e.g., script run under a web server), or there may be a typo in a file name, or some other problem, etc. Comment out the chmod line and try this to see if you get what you are expecting:

    my $original_mode = (stat( $original_file ))[2]; my $target_mode = (stat( $target_file ))[2]; print "Original Filename: $original_file\nOriginal mode: $original_mod +e\n"; print "Target Filename: $target_filename\ntarget mode: $target_mode\n" +;

    Anne

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1034026]
Approved by ww
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (9)
As of 2014-11-28 10:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (195 votes), past polls