Нужна раскраска только на гласный символ с perl на linux - PullRequest
0 голосов
/ 04 декабря 2018

я пытаюсь раскрасить только гласный символ, но я могу изменить только цвет всего текста с помощью этого кода, как раскрасить только гласный символ?

я пытаюсь использовать if ($char=='a') на for $char(@chars), но этоничего не меняет

#!/usr/bin/perl
use Term::ANSIColor;
$color;
$reset=color("reset");
do{
open MYFILE, "/home/yusuf/program/file.txt" or die "could not open . . .";
while(<MYFILE>){
    @chars=split //;
    for $char(@chars){
        print $color;
        print "$char";
        print $reset;
    }
}
close MYFILE;
print "\n=====Program mewarnai semua huruf vocal=====\n";
print "1. Red\n";
print "2. Blue\n";
print "3. Green\n";
print "4. Magenta\n";
print "5. White\n";
print "6. Black\n";
print "Input No: "; $input=<STDIN>;
if ( $input==1 ){
    $color=color("red");
}
elsif( $input==2 ){
    $color=color("blue");
}
elsif( $input==3 ){
    $color=color("green");
}
elsif( $input==4 ){
    $color=color("magenta");
}
elsif( $input==5 ){
    $color=color("white");
}
elsif( $input==6 ){
    $color=color("black");
}
}while($input!=7);

1 Ответ

0 голосов
/ 04 декабря 2018

ВСЕГДА используйте use strict; use warnings qw( all ); !!!Это идентифицировало бы вашу проблему: == для сравнения чисел, в то время как строки сравниваются с использованием eq.

my @chars = split //;
for my $char (@chars) {
    if ($char eq 'a') {
       print $color;
       print $char;
       print $reset;
    } else {
       print $char;
    }
}

. Вы также можете использовать следующее:

s/a/${color}a$reset/g;
print;

Этопоследнюю версию легче расширить.

s/([aeiou])/$color$1$reset/g;
print;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...