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]