http://www.perlmonks.org?node_id=11149578


in reply to Re^4: bug or curly bracket hell?
in thread bug or curly bracket hell?

if ( ($line =~ /^VARDB_database/) && ($CLIDB_database < 1) ) {$VARDB_database = $line; my $VARDB_database =~ s/.*=//gi;}
With strict enabled you can't do certain things that make no sense, like declaring a variable with "my" after you already used that variable.

Replies are listed 'Best First'.
Re^6: bug or curly bracket hell?
by MoodyDreams999 (Beadle) on Jan 13, 2023 at 21:52 UTC
    Well I guess that means I will have to rewrite it all if I wanna use strict, thank you for the guidance
      To fix this line, just remove the "my" before "$VARDB_database":
      if ( ($line =~ /^VARDB_database/) && ($CLIDB_database < 1) ) {$VARDB_database = $line; my $VARDB_database =~ s/.*=//gi;}
      Using strict and warnings will save you from bugs like the above which fail silently:

      use strict; use warnings; #path to astguiclient configuration file: my $PATHconf = '/etc/astguiclient.conf'; my ( $PATHlogs, $VARserver_ip, $VARDB_server, $VARDB_database, $VARDB_user, $VARDB_pass, $VARDB_custom_user, $VARDB_custom_pass, $VARDB_port); # Now perl knows the variables you will use, so if there is # a typo later like "$PATHlog" instead of "$PATHlogs" then # perl will tell you how to fix it, instead of just failing # silently (like crappy PHP and Python :^) open(conf, "$PATHconf") || die "can't open $PATHconf: $!\n"; my @conf = <conf>; close(conf); my $i=0; foreach(@conf){ my $line = $conf[$i];