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]