use strict; use warnings; my $filename = $ARGV[0]; my ($name, $number); open my $fh, "<", "$filename" or die "$!"; open my $fh2, ">", "list.txt" or die "$!"; while(my $line = <$fh>) { if( $line =~ /^\s*FN:(\w+\s*\w*)\b/ ) { $name = $1; } elsif( $line =~ /^\s*TEL;TYPE=CELL;TYPE=PREF:([+|(?:91)]?\d{10})\b/ ) { $number = $1; if( defined($name) && defined($number) ) { printf $fh2 "%15s -> %d\n", $name, $number ; } } } close $fh2 or die "$!"; close $fh or die "$!";