develooper Front page | perl.beginners | Postings from February 2002

Re: In-line editing..

Thread Previous
From:
John W. Krahn
Date:
February 6, 2002 23:31
Subject:
Re: In-line editing..
Message ID:
3C622D42.A8B91533@acm.org
"Steven M. Klass" wrote:
> 
> Hi all,
> 
>         Here is the general problem.  I have a file that I need to edit but can't.
> That file is then fed into another program.  Think of the file that I want to
> edit is like a makefile, that I want to use after I tweak it a bit.  The
> general idea would be:
> 1) Find out what needs to be edited in FILE - DONE
> 2) Open file and read in the contents.  While those are being read in compare
> the stuff to be edited looking for the flags.  I'm thinking some standard
> search and replaces? - DONE (I THINK:))
> 3)  Now after my edits have been inputed, how do I automatically invoke my
> app using this new "buffer"  - HELP!!
> 
> Here is what I think I need :
> 
> <snip>
> my $APP ="/bin/someapp"
> open (FILE, "file.txt") || die "Can't access file\n";
        ^^^^
Shouldn't this be CELL?

> while (<CELL>) {
>     s/INPUT\ FILE.*/INPUT\ FILE\ $VARIABLE/;
>         #replace the default with my option
>     }
> 
> $APP CELL &; #<<-- This is just a guess??  Basically disconnect and run?
> <snip>
> 
> Is this the right idea?  Is there a better way to do this??  Can someone
> complete this picture for me, I would really appreciate it


If I understand you correctly then this should work:

#!/usr/bin/perl -w
use strict;

my $app  = '/bin/someapp';
my $variable = 'something';

{
local $^I = '';  # edit in-place
local @ARGV = 'file.txt';

while ( <> ) {
    s/INPUT FILE.*/INPUT FILE $variable/;
    # replace the default with my option
    }
close ARGV; # just to be safe
}

system "$app $file &"; # Basically run in background

__END__


John
-- 
use Perl;
program
fulfillment

Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About