Thanks for all the help again, I found out that the first record file was blank, so the varables could't initalise even if they wanted to.
On 2/2/07, Mumia W. <[EMAIL PROTECTED]> wrote:
On 02/01/2007 07:39 PM, Brad Cahoon wrote: > Hi again, > > I have lots of files ( see my first post to this group :) ) > they all have two lines simular to: > > Ref.: 005803/11-SY (T45) Total Amount "Ref.:" has a space after it here. > 685.00 > Lead: ARDA/DILAN/MISS Total Paid > 685.00 > > I want to rename the files with "Lead"-"Ref".txt > When I run the script I get an error : > Use of uninitialized value in concatenation (.) or string at rename.pl > line 15, > <DATA> line 70. > > and then the same error over 10,000 times before I pull the plug (ctl-c) > > sorry to be a pain but I cannot see the error of my ways. > > Thanks > Brad > > My script: > > #! /usr/bin/perl > use strict; > use warnings; > > my $newname; > my $end= '.txt'; > my $refno; > my $lead; > > > my $newfile; > my @files = <c:\\test\\*.txt>; > my $MyWrkLoc = q[c:\\test\\test1\\]; > > foreach $arg(@files){ > open DATA, "$arg"; > opensub(); > $newname = "$lead-$refno$end"; > rename $arg, "$MyWrkLoc$newname"; > } > > sub opensub { > while (<DATA>) { > chomp($_); > if ($_ =~ m/^Ref.:(\S)/i) { # get Reference Number This regex does not allow "Ref.:" to have a space after it. Consider the possibility that spaces may also be before "Ref.:" . The same goes for "Lead:" . > $refno=$1; > $refno=~ s/[\/|-]/_/; > print $refno; > } > > if ($_ =~ m/^Lead:(\S)/i) { # get Lead Name > $lead=$1; > $lead=~ s/[\/|-]/_/; > print $lead; > } > } > } > > ## the two print statements are just debuging pls ignore ## > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/