The first problem is that unless(-d "Automation") is checking for an Automation directory in the current working directory. It needs to be changed to -d "/etc/Automation". Likewise for the mkdir.
You do not need to use opendir to do this work. A couple of other things... always use 3-arg open, always use lexical file handles (not bareword ones), check if things like open and mkdir succeeded, and always use strict; and use warnings;.
Also, your crontab entry gets written to a file named crontab in the current working directory, same goes for the aptscript.pl file. You'll need to specify the paths to those files (in the open call) if that wasn't your intention.
Here's an untested rewrite that will hopefully get you closer.
use warnings; use strict; my $username = getpwuid( $< ); my $dir = '/etc'; if($username ne "root"){ print "please run this script as root...\n"; exit; } else{ unless (-d "$dir/Automation"){ mkdir"$dir/Automation" or die $!; my $cronjob = "0 12 * * * /usr/bin/perl /etc/Automation/aptscript.pl"; open my $cron_fh, '>', 'crontab'; print $cron_fh $cronjob; close $cron_fh; open my $script_fh, '>', 'aptscript.pl' or die $!; print $script_fh '' . "#!/usr/bin/perl\n" . "print 'replace this script ...'"; close $script_fh; } }
In reply to Re: detecting directory in perl
by stevieb
in thread detecting directory in perl
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |