Оператор if
в Perl не может быть частью выражения, это отдельная конструкция. Если вы хотите поместить его в выражение, оно должно быть заключено в блок do {...}
.
Встроенным эквивалентом является конструкция COND ? EXPR1 : EXPR2
, аналогичная do {if (COND) {EXPR1} else {EXPR2}}
.
Вы должны использовать лексические переменные, объявленные с my
вместо use vars
прагмы.
Ваш код также содержит много повторений. Perl очень хорошо позволяет вам устранить это, что экономит время, упрощает рефакторинг и сокращает количество ошибок.
Например, сопоставление имен цветов с шестнадцатеричными кодами должно выполняться с помощью хеш-таблицы. Аналогично, установка многих переменных после запроса пользователя может быть записана в виде цикла.
Вот краткий пример того, что я имею в виду:
my @questions = (
[\my $TWT => "What would you like the title of the website to be? "],
[\my $firstecolour => "What would you like as the background colour?\nIt will be a gradient, enter your top colour: "],
[\my $secondcolour => "Choose your second colour: "],
);
for (@questions) {
print $$_[1];
chomp (${$$_[0]} = <STDIN>)
}
my %colors = do {
no warnings 'qw';
qw(
black #000000
red #FF0000
green #00FF00
blue #0000FF
yellow #FFFF00
cyan #00FFFF
pink #FF00FF
grey #C0C0C0
white #FFFFFF
)
};
for ($firstecolour, $secondcolour) {
if ($colors{lc $_}) {
$_ = $colors{lc $_}
}
}
say for $firstecolour, $secondcolour;