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

Hello, I'm trying to compare 2 variables and my code states the variable exists in the file which it doesn't. I have a file with the word "TEMPDB" and I altered the word read in to be compared. The checks states variable exists. I think I tried most things, please help. Thanks.
sub check_server_exist { my($svr) = "\Uempdb"; ### altered word #### my(@sql_in) = "d:\\tmp\\sql.txt"; ##### Open file, if server name exists, will close if true ### @check_name = (); open(sql_ini, "< @sql_in") or die "can't open the file: @sql_in $! \n" +; ## Open existing file while (<sql_ini>) { ## { print "$_"; } ; ## Readi +ng every line in the file chomp; # no newline s/#.*//; # no comments s/^\s+//; # no leading white s/\s+$//; # no trailing white #push(@check_name, $_); } print "This is the server name: $svr\n"; if ($_ =~ m/${svr}/ || $_ =~ m/${svr}_BACKUP/ || $_ =~ m/${svr}_REP/ | +| $_ =~ m/${svr}_RSM/ || $_ =~ m/${svr}_XP/) { print "Server name exists\n\n"; &leave } } };

Replies are listed 'Best First'.
Re: Comparing variables
by dragonchild (Archbishop) on Aug 24, 2001 at 00:02 UTC
    Ok. Your first issue is that your code isn't doing what you think it's doing. When reformatted, it looks something like:
    sub check_server_exist { my($svr) = "\Uempdb"; my($sql_in) = "d:\\tmp\\sql.txt"; my @check_name = (); open(SQL_INI, "<$sql_in") or die "can't open the file: @sql_in $! \n"; while (<SQL_INI>) { chomp; s/#.*//; s/^\s+//; s/\s+$//; #push(@check_name, $_); } print "This is the server name: $svr\n"; if ($_ =~ m/${svr}/ || $_ =~ m/${svr}_BACKUP/ || $_ =~ m/${svr}_REP/ || $_ =~ m/${svr}_RSM/ || $_ =~ m/${svr}_XP/) { print "Server name exists\n\n"; &leave; } } };
    As written, this code doesn't even compile, because of the extra }; at the end. However, taking that out, you'll notice that $_ isn't set to anything when you do the if-checks. This means that the if-check will always fail. (I don't know how you're getting what you're getting, but the if-check will always fail.) You would have noticed at least some of this had you used strict and warnings.

    ALWAYS USE STRICT AND WARNINGS

    Now, given that, you should be able to work your way through what's going on.

    ------
    /me wants to be the brightest bulb in the chandelier!

    Vote paco for President!