Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
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: (3)
As of 2014-09-21 00:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (165 votes), past polls