George_Sherston has asked for the wisdom of the Perl Monks concerning the following question:

Further to this thread, in which I try to write a utility script to make my newly uploaded files executable, I've now got my ISP to let me run scripts suEXEC. And, bearing in mind the helpful comments on my recently posted other code I have pared my script down to the script you see at the end of this node.(if sibling pixel should read this - note that I have taken to heart your advice about how to use, for which again thanks).

So that's fine. It works. It toggles the file permissions of files in a given directory. BUT... does it toggle them from 644 to 755? It does not! It toggles them from 204 to 363. It consistently chmods files to 204 when I want 644 and 363 when I want 755. And it does the same thing if I try 0755 and 0644. I'm puzzled.

Is this something wrong with my script? If so, I'd be very grateful to know what. Or is it some obvious thing outside the script I should check - again, any advice gratefully received.

Here's the code:
#!/usr/bin/perl -w use strict; use CGI qw(:standard); print header, start_html( -title=>'CHMOD UTILITY' ); &do_chmod if param; &send_form; sub do_chmod { for (param('Dirs')) { my @files; push @files, $_ while <$_*.p*>; if (chmod param('Action'), @files) { print "Changed permissions on " . join(" ; ",@files) . " t +o " . param('Action') . "<BR>"; } else { print "Could not change permissions on " . join(" ; ",@fil +es) . " to " . param('Action') . "<BR>"; } } print "DONE"; } sub send_form { my @dirs; push @dirs, $_ while <../*/>; print startform( -name=>'mainform', -method=>'POST', -action=>'', ), checkbox_group( 'Dirs', [@dirs], [], 1, ), submit( -name=>'Action', -value=>'0755', ), submit( -name=>'Action', -value=>'0644', ), endform, end_html; }
Thanks to all,

George Sherston