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
In reply to Re: $1 does not reset to undef
by ww
in thread $1 does not reset to undef
by snk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |