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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.