Another perl Q.

Sean picasso@madflower.com
Tue, 9 Jan 2001 13:25:31 -0500 (EST)


Mucho Gracious! *worships* 

On Wed, 10 Jan 2001, Dpk wrote:

> On Tue, Jan 09, 2001 at 11:47:29AM -0500, Sean wrote:
> 
>    Is there a library function or what is the best way to replace the
>    contents of a file between two markers with perl of course =)
>    like:
>    <!-- beginning -->
>    
>    Replace all of this crap with new contents. 
>    from the This_might_be_better.txt file
>    <!--end -->
> 
> Example solution is below.  Execution without arguments will return
> the usage.  You could easily turn this into a subroutine if needed.
> 
> dpk
> 
> ---- Begin script ----
> #!/usr/bin/perl -w
> 
> use strict;
> 
> my $file = shift;
> my $ifile = shift;
> if (! $file || ! -f $file || ! $ifile || ! -f $ifile) {
>     print "Usage: $0 [file] [file-to-insert]\n";
>     exit 1;
> }
> 
> open(FILE, "< $file") or die "E: Cannot open file: $file\n";
> my @lines = <FILE>;
> close FILE;
> 
> rename($file, "$file.bak") or die "E: Cannot backup file: $file\n";
> 
> my $flag = 0;
> open(FILE, "> $file") or die "E: Cannot open file: $file\n";
> for (@lines) {
>     if (/^<!-- beginning -->/) {
>         $flag = 1;
>         print FILE;
>         if (open(INSERT, "< $ifile")) {
>             print FILE <INSERT>;
>             close INSERT;
>         }
>     }
>     elsif (/^<!--end -->/) {
>         $flag = 0;
>     }
>     print FILE if $flag == 0;
> }
> close FILE;
> ---- End script ----
>