if (...) { if (...) { if (...) { if (...) { .... } else { return 0; } } else { return 0; } } else { return 0; } } else { return 0; } #### ($msg =~ /^([^\s]+)/) or return 0; $alias = $1; ($msg =~ /-address="([^"]+)"/) or return 0; $address = $1; ($msg =~ /-port="([^"]+)"/) or return 0; $port = $1; ($msg =~ /-nick="([^"]+)"/) or return 0; $nick = $1; ($msg =~ /-password="([^"]+)"/) or return 0; $password = $1; ($msg =~ /-prefix="([^"]+)"/) or return 0; $prefix = $1; ($msg =~ /-auto_connect="([^"]+)"/) or return 0; $auto_connect = $1; #### # Regular expressions to apply my $a_regexes = [ qr/^([^\s]+)/, qr/-address="([^"]+)"/, qr/-port="([^"]+)"/, qr/-nick="([^"]+)"/, qr/-password="([^"]+)"/, qr/-prefix="([^"]+)"/, qr/-auto_connect="([^"]+)"/, ]; # Construct an array of resulting regex captures my @results = ( ); # Save each pattern (returning if missing from regex) foreach my $regex (@$a_regexes) { if ($msg !~ /$regex/) { return 0; } push @results, $1; } # Assign to the desired variables my ($alias, $address, $port, $nick, $password, $prefix, $auto_connect) = @results; #### # Define the tokens we wish to extract my @tokens = qw( address port nick password prefix auto_connect ); # First token is a special case my $alias = ($msg =~ /^(\S+)\s*/)? $1: ""; $alias or return 0; # Construct an array of resulting regex captures my @results = ( ); # Construct the regex from each token, and capture the value foreach my $token (@tokens) { ($msg =~ /-${token}="([^"]+)"/ or return 0; push @results, $1; } # Assign to the desired variables my ($address, $port, $nick, $password, $prefix, $auto_connect) = @results;