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 ----
>