Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Perl - Use of uninitialized value?

So I'm trying to run this code...

my $filePath = $ARGV['0'];
if ($filePath eq ""){
    print "Missing argument!";
}

It should check the first command line argument, and tell me if its empty, but it returns this error and I can not figure out why:

Use of uninitialized value $filePath in string eq at program.pl line 19.

What am I doing wrong?

like image 760
A Clockwork Orange Avatar asked Mar 20 '11 13:03

A Clockwork Orange


1 Answers

Just check to see if $ARGV[0] is defined

#!/usr/bin/perl
use strict;
use warnings;

if(!defined $ARGV[0]){
    print "No FilePath Specified!\n";
}

This will print "No FilePath Specified!\n" if there was none passed command line.

The problem you are running into, is you are setting $filePath to an undefined value. Warnings is complaining because you've then tried to compare an undefined value to "". Warnings thinks that is worth telling you about.

I used my example to show a clean way of checking if something is defined, but technically for this, you could also just do:

if(!@ARGV){
    print "No FilePath Specified!\n";
}
like image 191
Caterham Avatar answered Oct 09 '22 11:10

Caterham