On Tue, Jan 15, 2002 at 06:23:28PM +0100, Martin wrote:
> im trying to make a script to read a textfile with the following format:"
>
> TITLE
> Welcome to Carcinoma in Situ
>
> "
> i want my script to recognice the TITLE tag and save the following line(s) in $TITLE:
>
> heres what i have done:
>
> while (<>) {
> chomp;
> if (/TITLE\s*([A-Za-z]+)/) {
> $TITLE=$1;
> }
> }
> print $TITLE;
>
> upon script textfile.txt > outputfile i get this error:
> Use of uninitialized value in concatenation (.) or string in line (the one with
>print $TITLE in it)
>
> i think my regex is not doing what i want it to do??? why?
---end quoted text---
$/ is the record delimiter. It's default is "\n". Each line will be read
in thus:
line1: TITLE\n
line2: Welcome to Carcinoma in Situ\n
so your loop will say :
line1: yup got TITLE, um no later match for regex :( so $1 is unset.
line2: nope it doesn't match.
either set $/ to undef
or set a flag in the loop when the regex is matched and clear it when a
value is added:
while (<>){
if ($next_line_is_title) { # this line is a title
chomp;
$TITLE=$_;
$next_line_is_title=0;
}
/TITLE/ and $next_line is title;
}
HTH.
--
Frank Booth - Consultant
Parasol Solutions Limited.
(www.parasolsolutions.com)
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]