This script is giving me a null output.
Really? I get output
syntax error at 806010.pl line 12, near "$record {" syntax error at 806010.pl line 29, near "}" Execution of 806010.pl aborted due to compilation errors.
When I fix the error, it works fine for me:
#!/usr/bin/perl use strict; use warnings; my @office_patterns = ( '^\d{3}-\d{4}$' ); my @international_patterns = ( '^[+]\d \d{3} \d{3}-\d{4}$' ); my @records = ( '662-5555', '+1 102 892-1314', ); my @office_phones; my $office_phones; my @international_phones; NUMBER: foreach (@records) { my $record = $_; # Trim spaces. $record =~ s/^\s+//; $record =~ s/\s+$//; foreach my $office_pattern (@office_patterns) { if ($record =~ /$office_pattern/) { push @office_phones, $record; next NUMBER; } } foreach my $international_pattern (@international_patterns) { if ($record =~ /$international_pattern/) { push @international_phones, $record; next NUMBER; } } } print "$_ (o)\n" for @office_phones; print "$_ (i)\n" for @international_phones;
662-5555 (o) +1 102 892-1314 (i)
Here's some cleanup code:
#!/usr/bin/perl use strict; use warnings; my @office_pats = ( '\d{3}-\d{4}' ); my @iternat_pats = ( '[+]\d \d{3} \d{3}-\d{4}' ); my ($office_pat) = map qr/$_/, join '|', @office_pats; my ($internat_pat) = map qr/$_/, join '|', @internat_pats; my @office_phones; my @internat_phones; for (@recs) { my $rec = $_; $rec =~ s/^\s+//; $rec =~ s/\s+$//; push @office_phones, $rec if $rec =~ /^$office_pat\z/; push @internat_phones, $rec if $rec =~ /^$internat_pat\z/; } print "$_ (o)\n" for @office_phones; print "$_ (i)\n" for @internat_phones;
In reply to Re: pull single value
by ikegami
in thread pull single value
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |