#!/usr/local/bin/perl -w use strict; sub DoFile { my ($src) = @_; my @children; my $child; my $i; print STDOUT "DoFile: $src...\n"; if (-d $src) { # print STDOUT " ...it's a directory\n"; if (-r $src) { # print STDOUT " ...it's readable\n"; @children = <$src/*>; foreach $child (@children) { DoFile ($child); } } else { # print STDOUT " ...it's NOT readable\n"; } } elsif (-f $src) { # print STDOUT " ...it's a file\n"; if ($src =~ m(([^/]+)\.cpp$)) { # print STDOUT " ...it's an RCPP file\n"; my $name = $1; if (-r $src) { # print STDOUT " ...it's readable\n"; print STDOUT " Fixing <$src>\n"; open IN, $src; my @allLines = ; close IN; my $in = join "", @allLines; open OUT, ">$src"; $in =~ s/procedure_body main/program_body main/g; print OUT $in; close OUT; } else { # print STDOUT " ...it's NOT readable\n"; print STDERR " Warning: <$src> not readable\n"; } } else { # print STDOUT " ...it's NOT an RCPP file\n"; } } else { # print STDOUT " ...it's neither a directory nor a file\n"; } } #################### ### Main Program ### #################### use FileHandle; STDOUT->autoflush (1); my $i; for ($i = 0; $i <= $#ARGV; $i++) { $ARGV[$i] =~ s(/?$)(); DoFile ($ARGV[$i]); }