Here is something that might get you started.
use strict; use warnings; use Data::Dumper; foreach my $file (glob("*.ATT")) { open(my $fh, '<', $file) or die "$file: $!"; my %params = map { chomp($_); my ($key, $value) = split(/=/, $_); $value="" unless(defined($value)); ($key, $value) } <$fh>; close($fh); next if( $params{'page_id'} =~ m/(^\s*$|\?)/ or $params{'site_code'} =~ m/(^\s*$|\?)/ or $params{'subject_id'} =~ m/(^\s*$|\?)/ ); $params{'page_description'} .= "some text - $params{'page_id'}"; print Dumper(\%params); }
Given a file test.ATT with the content as in your example, this produces:
$VAR1 = { 'content_provider' => '(removed)', 'page_id' => '#### (usually 3-5 digits)', 'OBJECT' => '(removed)', 'SAVE' => '', 'study_number' => '(removed)', 'CONTENT' => 'test.pdf', 'page_description' => 'some text - #### (usually 3-5 digits) +', 'subject_id' => '#########', 'site_code' => '###', 'product' => '(removed)' };
To understand how this works you may find some of the perl manual pages helpful (perldata, perlop, perlfunc, perlsyn, perlre) and, for a gentler introduction you might like to start from Where and how to start learning Perl.
Good luck learning perl!
update: corrected the update of page_description.
In reply to Re: Perl noob is lost
by ig
in thread Perl noob is lost
by sensesfail
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |