Howdy:
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.
[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 $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);
# 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 script]
What I expected was to change the line that looks like
this:
[snip wishful thinking output]
measure_id integer,
code_set character varying(100), **
label character varying(100), **
sex character(1),
[/snip wishful thinking output]
But I am getting this:
[snip error'ed output]
measure_id integer,
code_set character varying(100)(100)(100)(100)(100)(100)(100)(100),
label character varying(100)(100)(100)(100)(100)(100)(100)(100),
sex character(1),
[/snip error'ed output]
Can someone help me understand why I am getting the
extra (100)'s at the end and how to fix it?
Thanks!
-X