There are many alternatives. Here is one way that keeps the overall layout of the file:
use strict; use warnings; use Data::Dumper; foreach my $file (glob("*.ATT")) { open(my $fh, '<', $file) or die "$file: $!"; my $content = do { local $/; <$fh> }; close($fh); my ( $page_id ) = $content =~ m/^page_id=(.*)/m; my ( $site_code ) = $content =~ m/^site_code=(.*)/m; my ( $subject_id ) = $content =~ m/^subject_id=(.*)/m; my ( $page_description ) = $content =~ m/^page_description=(.*)/m; next if( $page_id =~ m/(^\s*$|\?)/ or $site_code =~ m/(^\s*$|\?)/ or $subject_id =~ m/(^\s*$|\?)/ ); $page_description .= "some text - $page_id"; $content =~ s/^page_description=.*/page_description=$page_descript +ion/m; print "$content"; }
In this case, the entire file content is read into a single string (slurped) then pattern matching and substitution are used to extract data and modify the description without chaning the overall layout. The result is:
OBJECT=(removed) page_id=#### (usually 3-5 digits) page_description=some text - #### (usually 3-5 digits) product=(removed) study_number=(removed) content_provider=(removed) site_code=### subject_id=######### CONTENT=test.pdf SAVE
In reply to Re^3: Perl noob is lost
by ig
in thread Perl noob is lost
by sensesfail
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |