http://qs321.pair.com?node_id=1081240


in reply to Use of uninitialized value $_ in string

What is on line 32 for you? When I put your script into my editor, line 32 is:

die "Usage: $0 --domain companydomain.com --client company [--job-code + 12345] [--help].\n";

Is it my $conf = "$_"; ?? If so, what are you trying to do here?

Replies are listed 'Best First'.
Re^2: Use of uninitialized value $_ in string
by juanpablo (Novice) on Apr 05, 2014 at 13:56 UTC

    Hi frozenwithjoy,

    Yes, the line 32 is my $conf = "$_";. I've managed to remove the errors but I'm not so sure if this is the correct approach especially the declaration of the same variables under sub add_vhost. What I did was...

    remove these variables from above:

    my $conf = "$_"; my $conf_bn = basename($conf); my $conf_mtime = (stat($conf))[9]; my $date = strftime '%m%d%Y', localtime; my $backup = "$conf.$date"; my $backup_bn = basename("$conf.$date"); my $ltime = localtime();

    then declared the $conf, $conf_bn, and $ltime variables under sub add_vhost.

    sub add_vhost { my $conf; my $conf_bn; my $ltime;

    and removed the comments from the variables under foreach...

    foreach (@object) { my $conf = "$_"; my $conf_bn = basename($conf); my $conf_mtime = (stat($conf))[9]; my $date = strftime '%m%d%Y', localtime; my $backup = "$conf.$date"; my $backup_bn = basename("$conf.$date"); my $ltime = localtime();

    The errors were gone every time I execute the script. However, after providing two required arguments, the script still does nothing. I was expecting it would start creating a backup of the existing file.

    [root@wsprod01 myperl]# ./test.pl --domain google.com --client google Usage: ./test.pl --domain companydomain.com --client company [--job-co +de 12345] [--help].

    Cheers,

    JP

      ... the script still does nothing.
      [root@wsprod01 myperl]# ./test.pl --domain google.com --client google Usage: ./test.pl --domain companydomain.com --client company [--job-co +de 12345] [--help].

      In the code shown in the OP, in the statement

      GetOptions ( 'domain=s' => \$domain, 'client=s' => \$client, 'job-code:i' => \$job_code, 'help' => &usage() ) or &usage();
      the  'help' key is given the value of whatever is returned by a call to the  usage() function. Problem is, this function returns nothing; rather, it calls die to print a usage message, so program execution will never get past the  GetOptions() function call. Is this what you intend?

      Updates:

      1. If you want to assign the  'help' key a reference to the  usage() function,
            'help' => \&usage,
        would be the correct expression.
      2. Added italic emphasis in "... a call to the  usage() function."

        Hi AnomalousMonk,

        Thanks for pointing it out. Yes, I admit I missed adding the backslash before the &usage(). The script works fine as of now but I'm still trying to improve its features and hopefully I don't get new errors. :)

        Thanks a lot for the help!

        Cheers,

        JP

        I suspect that is what's intended AnomalousMonk - I've yet to write/encounter a script or command that generates usage/help ... and then proceeds onwards.

        A user level that continues to overstate my experience :-))