#!/usr/bin/perl ################################################# # PROGRAM: Parse Phone Numbers (PPN) V2.0 # # PPN reads lines from standard input and if the # line contains a phone number, prints out the # area code, first block and second block of the # number. Only the first number on any line is # processed. ################################################# while(<>) { ############################################### # Parse input line ############################################### $line = $_; $match_query = $line =~ / (1|1\-|1\w)? # Possible 1 or 1- ((\d\d\d)|\((\d\d\d)\)) # Area code (possibly in parens) (\-|\s)? # Space or dash or nothing (\d\d\d) # Block one (\-|\s)? # Space or dash or nothing (\d\d\d\d) # Block two /x; ############################################### # If line contains Phone#, print out componants ############################################### if ($match_query) { $ac = $3.$4; # $3 is the ()-free area code, $4 is the area code inside ()s. # One or the other will be empty, so the concatenation is the area code! $b1 = $6; $b2 = $8; print "area code is $ac\n"; print "block one is $b1\n"; print "block two is $b2\n"; } }