Kiko Uehara wrote:
> 
>  Hi everyone,

Hello,

> I have a following data to analyze :
> ---------
>  BlockA
>         color 0 0 0
>         rcolor 1 1 1
>         dcolor 2 2 2
> 
>  BloackB
>         color 0 0 0
>         rcolor 1 1 1
>         dcolor 2 2 2
> (...and so on)
> ---------
> 
> I want to replace
>  BlockA rcolor "1 1 1" to "4 4 4"
>  and
>  BlockB rcolor "1 1 1" to "0 0 0".
> 
> I have variables like $BlockA_rcolor = "rcolor 4 4 4".
> 
> -------------
> while (<IN>)
> {
>     if ( $_ =~ m/rcolor/ )
>     {
>         $_ = $BlockA_rcolor;
>     }
>     print $_;
> }
> -------------
>  Above code will replace all 'rcolor' lines in the data.
> 
> Can anyone please give me an idea, what kind of method I could use ?
> If my question doesn't have enough information, please let me know.

It looks like you should use paragraph mode and probably a hash:

$/ = '';
my %rcolor = ( A => '4 4 4', B => '0 0 0' );

while ( <IN> ) {
    if ( /^\s+Block([A-Z])\b/ ) {
        my $key = $1;
        s/\b(rcolor\s+)\d+\s+\d+\s+\d+/$1$rcolor{$key}/;
    }
    print;
}


John
-- 
use Perl;
program
fulfillment

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

Reply via email to