in reply to $1 does not reset to undef
While the initial responses offer valuable suggestions on the reset issue, I believe the authors (update+correction: Blooknok excepted) mis-read the question.
OP asks "to select lines which do not have : at the first word."
I read first word (in this context and OP's data sample) as the characters prior to the first space.
Hence:
#!/usr/bin/perl use 5.016; use warnings; # 1059623 # select lines which do not have : at the first word. my @arry=( 'bond0.2 Link encap:Ethernet', 'bond4.3:6 Link encap:Ethernet', 'bond3 Link encap:Ethernet', 'bond5:0 Link encap:Ethernet', 'bond1.5:2 Link encap:Ethernet', 'bond2.6 Link encap:Ethernet' ); my $elem; for $elem(@arry) { if($elem =~ /(bond[^:]+?)\s+Link.*$/) { # note negated char cl +ass, minimally my $match = $1; # You may find it 'goo +d practice' to extract # any value in $1 to a +nother var ASAP say $match . " The colon, if any, is AFTER the first w +ord \n\tin | \"$elem\" |"; } else { say "Matching colon in first word (ie, before a space) +\n\t in | \"$elem\" |"; } } =head C:\>1059623.pl bond0.2 The colon, if any, is AFTER the first word in | "bond0.2 Link encap:Ethernet" | Fails OP's criterion; matching colon in first word (ie, before a space +) in | "bond4.3:6 Link encap:Ethernet" | bond3 The colon, if any, is AFTER the first word in | "bond3 Link encap:Ethernet" | Fails OP's criterion; matching colon in first word (ie, before a space +) in | "bond5:0 Link encap:Ethernet" | Fails OP's criterion; matching colon in first word (ie, before a space +) in | "bond1.5:2 Link encap:Ethernet" | bond2.6 The colon, if any, is AFTER the first word in | "bond2.6 Link encap:Ethernet" | C:\> =cut
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: $1 does not reset to undef
by McA (Priest) on Oct 25, 2013 at 13:31 UTC | |
|
Re^2: $1 does not reset to undef
by Bloodnok (Vicar) on Oct 25, 2013 at 12:54 UTC | |
by ww (Archbishop) on Oct 25, 2013 at 13:12 UTC |