in reply to Extracting the number in a file and get the value and output to the other file
Nit: the "8945" in your last code block, "the output...6 digits number" doesn't seem to bear any direct relationship to the data sample you provided. It's not crucial to our understanding -- in this case! -- but generally, you do need to be careful to cut and paste accurately to avoid sending us off on wild goose chases.
More substantially, the regex, $test=~s/\([\d.+]|[\d.+]\)//g often won't do what you appear to expect, as (ignoring the attempt to match parentheses) it matches any digit, followed by one_or_more of anything (digit or not). For help on that -- in other words, to see why you got two sets of two digits -- reread about quantifiers.
And, my suggestion would be that you'll learn more by doing so before reading the below:
#!/usr/bin/perl use strict; use warnings; # 894373 my $test="PP: (899040) Jane Smith"; $test =~ s/\(|\)//g; print $test . "\n"; my $test1 = "PP: (899040) Jane Smith"; if ( $test1 =~/([a-zA-Z]+: )\((\d{6})\)( .*)/ ) { print $1, $2, $3 . "\n"; } =head C:\>894373.pl PP: 899040 Jane Smith PP: 899040 Jane Smith =cut
|
|---|