SPUG: how to add text at start of a already existing file

Brian Hatch bri at ifokr.org
Tue Jan 18 06:59:07 PST 2005

> > hi i want to add text at very start of already existing file.
> > i have tried this code but it is adding only at end
> You use open(FH,"+< $file") to open an existing file for reading
> and writing.  Then you need to read in the entire current content
> of the file, because when you write your $msg out, it will overwrite
> what's there already.  After printing $msg, then print the original
> file data.  So:
> open(FH,"+< $file") or die "could not open: $!\n";
> seek FH, 0, 0;
> my $content = do { local $/; <FH> }; # read in whole file
> seek FH, 0, 0;
> print FH $msg, $content;
> close FH or die "could not close: $!\n";

How 'bout

	$ cat unshift_head
	#!/usr/bin/perl -p -i
	BEGIN { $msg = "Stuff I want to add.\n"}

	print $msg if $. == 1;

And then to run it

	$ unshift_head filename

Perl writes the rest because of the '-p' and '-i' switches.

Brian Hatch                  Those who live by
   Systems and                the sword, die by
   Security Engineer          the arrow.

Every message PGP signed
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://mail.pm.org/pipermail/spug-list/attachments/20050118/5498234a/attachment.bin

More information about the spug-list mailing list