use strict; use warnings; use diagnostics; use File::Copy; use FileHandle; use IO::File; #---------------------------------------------------------------------- # Variables, Arrays and Hash declarations: my ($manualdir_param) = @ARGV; my $working_dir = $manualdir_param; $working_dir =~ s/manualdir=//i; my $data_area = "/tmp"; my $html_dir = "$data_area/$working_dir"; my @FigureArray; my @endingArray; my $FigFile; my @FileArray; my @endArray; my $DirFile; my %images; my $line; my $img; my $fig; #---------------------------------------------------------------------- # Loop to locate HTML files, change permissions, and make working temporary copies opendir( HTMLSTORIES, "$html_dir") || die "HTML dirs do not exist: $1"; @FigureArray = grep{/^(09)(\w{1,5})(00)$/} readdir ( HTMLSTORIES ); foreach $FigFile (@FigureArray) { opendir( HTMSTORY, "$html_dir/$FigFile" ) || die "Files do not exist: $1"; @FileArray = grep{/a.htm$/} readdir ( HTMSTORY ); foreach $DirFile (@FileArray) { # copy ("$html_dir/$FigFile/$DirFile", "$html_dir/$FigFile/$DirFile.bak") or die "Can not make backup copy of file: $1"; chmod 0600, "$html_dir/$FigFile/$DirFile"; foreach $DirFile (@FileArray) { open (PATTERN, "<", "$html_dir/$FigFile/$DirFile") or die "Unable to open pattern file: $1"; while () { chomp; if ($line = /(\)/.../(Figure\s*\d+)/) { $img = $1; $fig = $3; } if ($img && $fig) # if we find both IMG AND Figure lines, add them to images hash. { $images{$fig} = $img; } foreach (sort keys %images) { # print "$_: $images{$_}\n"; } # find matching Figure lines in text file and do linking. while (( $fig, $img) = each(%images)) { grep{$fig} "$html_dir/$FigFile/$DirFile"; s/$fig/"$fig<\/a>"/g; %images = (); } } close (PATTERN); closedir HTMSTORY; closedir HTMLSTORIES; # Loop to do cleanup opendir( ENDSTORIES, "$html_dir") || die "HTML dirs do not exist: $1"; @endingArray = grep{/^(09)(\w{1,5})(00)$/} readdir ( ENDSTORIES ); foreach $FigFile (@endingArray) { opendir( ENDSTORY, "$html_dir/$FigFile" ) || die "Files do not exist: $1"; @endArray = grep{/a.htm.bak$/} readdir ( ENDSTORY ); foreach $DirFile (@endArray) { # unlink ("$html_dir/$FigFile/$DirFile.bak") or die "Can not remove backup copy of file: $1"; chmod 0644, "$html_dir/$FigFile/$DirFile"; } } close ENDSTORY; close PATTERN; closedir HTMSTORY; closedir HTMLSTORIES; } } }