in reply to Perl - pattern matching

G'day Fabrizio,

Welcome to the monastery.

Here's a couple of points unrelated to your "pattern matching" query.

I see you've attempted to use lexical variables (with my) throughout your code — which is good. Had you used this line at the top of your code:

use strict;

The 'vars' stricture of strict would have alerted you to the fact that you'd forgotten to do this for @hostname_short.

Had you also used this line at the top of your code:

use warnings;

The 'syntax' category of warnings would have emitted a message that actually gave you a better way to write @hostname_short[0]:

Scalar value @hostname_short[0] better written as $hostname_short[0]

Using both of these pragmata in all of your scripts is a very good idea.

As it turns out, you could have written both of these lines:

@hostname_short = split(/\./,$fqdn,2); my $hostname = "@hostname_short[0]";

as just this single line:

my $hostname = (split /\./, $fqdn, 2)[0];

-- Ken

Replies are listed 'Best First'.
Re^2: Perl - pattern matching
by fabrizio_start_perl (Novice) on Apr 01, 2014 at 08:10 UTC
    Thanks!
      Hi, I continue working on my script and now is more powerfull :) ! I have a question about this section
      chomp (my $OVINSTDIR = `echo %OvInstallDir%`); if(-e $OVINSTDIR.'\bin\win64\opcmon.exe'){ my $COMMAND = $OVINSTDIR.'\bin\win64\opcmon.ex +e'; $OPCMON="$COMMAND"; qx[$OPCMON]; }
      when i execute the command $OVINSTDIR.'\bin\win64\opcmon.exe' i got error: 'C:\Program' is not recognized as an internal or external command, because variable $OVINSTDIR contains space (C:\Program Files\HP\HP BTO Software\) How can i manage this behavior ? Thanks, Fabrizio
        Hi, I solve using the character \" inside the variable. $OPCMON="\"$COMMAND\""; Regards, Fabrizio