Shaunn Johnson wrote:
> 
> Howdy:

Hello,

> I have a script where I'd like to open a
> bunch of files, search for a pattern and
> replace it with another.
> 
> What I am getting is not quite what I expected.
> I get almost everything, but I'm getting a
> bit more at the end.

It looks like you are modifying the same file more than once (about
eight times it seems.)  You need to use a regular expression that
matches "character varying" that is not followed by "(100)".


> [snip script]
> #!/usr/bin/perl -w
> use strict;
> use warnings;
> use diagnostics;
> use Cwd;
> 
> #
> # this is a script to look for and change some words
> # for the sql scripts that i have lying around for production
> # i'm at the point where i need to be a bit more lazy.
> #
> # yeah, i know ...
> 
> # create a few variables
> 
> my $sqldir=cwd;
> my $pattern='character varying';

my $pattern = qr/character varying(?!\(100\))/;


> my $new_ptrn='character varying(100)';
> 
> opendir (DIR, $sqldir) or die "can nae access the local directory: $!";
> # create and array and read in a list of files but NOT
> # root and current dir
> 
> my @list = grep {$_ ne 'temp' and $_ ne 'devel' and $_ ne '.' and $_ ne '..'
> and
>  $_ ne 'chng_field.pl' and $_ ne 'backup_ddl' } readdir(DIR);

If you have a long list of files to ignore I might do that differently:

my %ignore = qw(
    .             1
    ..            1
    temp          1
    devel         1
    chng_field.pl 1
    backup_ddl    1
    );

my @list = grep !exists $ignore{$_}, readdir(DIR);


> # create a loop to search for one instance of
> # my password and change it to something else
> # one day, i'll get smart and ask for a paramater, too
> 
> for my $file(@list) {
> open (FILE, $file) or die "can nae open this file: $!";
> 
> #local $^I=".bak";      # to keep a backup of the files
> local $^I="";   # to keep a backup of the files
>                         # set to "" if i don't want backups
> local @ARGV = @list;    # the files to work on
>         while (<>) {
>                 s!$pattern!$new_ptrn!g ;
>                 print;
>                 } # end while loop
>         close (FILE);
> } #end of for loop
> 
> close (DIR);
> 
> __END__
> 
> [snip]


John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to