Что то я совсем забросил мой список с вопросами. Тем более там есть совсем простой вид вопросов на понимание perl кода. На эти вопросы я сегодня и отвечу.
10)Что напечатает программа?
#!/usr/bin/perl
$a = "0";
if ($a) {
print "A";
} else {
print "B";
}
Ответ: Программа напечатает "B" т.к. при использовании конструкции if ($a) будет проверяться не только существование переменной $a, но и ее не нулевое значение, более того, если переменная является строкой, то интерпретатор попытается перевести ее число.
15) то напечатает программа?
#!/usr/bin/perl
$what = "bird";
$sentence = "Every good bird does fly.";
if ($sentence =~ /\b$what\b/) {
print "The sentence contains the word $what!\n";
} else {
print " The sentence not contains the word $what!\n";
}
Ответ: Программа напечатает " The sentence contains the word bird!" т.к. при проверке регулярным выражением if ($sentence =~ /\b$what\b/) проверяется наличие в строке слова bird (переменной $what стоящей между пробелами).
22) Чему равно $1 после выполнения?
#!/usr/bin/perl
$title = "Happy new 2007 year";
$title =~ m/^.*(\d+) year$/;
"Happy new"? "appy new 2007"? "Happy new 2007"? "2"? "7"? "2007"?
Ответ: Программа напечатает "7" т.к. в регулярном выражении ($title =~ m/^.*(\d+) year$/;) задан поиск последней цифры в троке перед словом year. Опция m - Многострочный режим, позволяющий находить совпадения в начале или конце строки, а не всего текста.
Пока все. КонецЪ Связи.
4 комментария:
не спец в perl (и не проверял): но имхо она напечатет A
т.к. "A" это строка
Во втором примере цифра 7 будет по причине прожорливости (по умолчанию в перле) шаблона .* который оставит для шаблона \d+ всего один символ 7.
Опция m - это не многострочный режим, а оператор сравнения - m// См. man perlop, секция Regexp Quote-Like Operators. А многострочный режим - это m после паттерна - =~ m/.../m.
2 vlad - напишет действительно "B", так как в Perl значение "0" в if приведется к 0, а 0 - это false.
Отправить комментарий