|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 25 Jun 2002 13:16:54 To : Eugene Bodin Subject : Re: Вспоминая Brainbench... -------------------------------------------------------------------------------- Eugene Bodin wrote: > Hello All, > > Посмотрел я на эхотажный экзамен по сабжу - > там по-прежнему остались вопросы с несколькими одинаково правильными > или всеми неправильными ответами (IMHO). > (Или вопросы, ответы на которые я не знаю. :-) ) Больше всего меня перло в свое время от вопроса в экзамене по C, та же, на брейнбенче. В переводе вопрос звучал примерно так: int main (int argc, char **argv) { int *p; *p = 6254238; printf ("%i\n", *p); return 0; } что произойдет при выполнении данной программы: 1. Программа зависнет. 2. Программа аварийно завершится. 3. Программа отработает, но выдаст неправильный результат. 4. Программа отработает и выдаст правильный результат. :-))) > > Я глючу или это действительно так? > ("Совсем неправильные" варианты ответов я убрал для экономии места.) > > ---1--- > Which one of the following statements adds the directory ../lib to the > library include path? > > @INC = (@INC, "../lib"); > use lib qw(../lib); > > Добавляют-то оба оператора, только второй ещё и удаляет дупы > (и потому рекомендуется к использованию), зато первый делает > _в точности_ то, о чём спрашивается... Верно. Кроме того второй делает это на этапе компиляции, но ведь никто не говорит, что первый вариант HЕ в блоке BEGIN > ---2--- > #! /usr/local/bin/perl -Tw > sub foo { > my $data = shift; > if ($data =~ /^([-\w.]*)$/) { > return $1; > } > return $data; > } > my $line = <STDIN>; > $line = foo($line); > > When would code similar to the above code be used in a perl program? > > When running setuid perl scripts that must securely use user-supplied data > When preparing a function that will eventually check data for specific > criteria > > С одной стороны, -T намекает на первый вариант (taint); > с другой стороны, foo() всегда возвращает свой первый аргумент > (совпавший или нет). Это почему? Когда введеная строка удовлетворяет регекспу, то возвращается не $data а $1, который untainted. Другое дело, что в нормальных условиях $line будет содержать еще и символ конца строки, и регексп не сматчится. Хотя конечно может кто-то вдувает на вход строку терминированную EOF-ом... > ---3--- > Which one of the following prints the current time as a human-readable > string? > > Choice 1 > use POSIX; > POSIX::localtime(time()); > Choice 3 > gmtime(time()); > Choice 4 > use POSIX; > POSIX::ctime(time()); > Choice 5 > localtime(time()); > > Строго говоря, ни один из вариантов ничего не печатает. :-) > А если использовать "print scalar( ... );" , > все печатают строку. > Разве что имелось в виду при использовании "print ( ... );" ? > (Тогда остаётся "POSIX::ctime(time());" ) Hда... "вот ур-р-роды!" (С) Брат-2 > > ---4--- > > Which one of the following statements defines a declaration? > > Choice 1 > A declaration is the allocation of only properties to a variable. > Choice 2 > A declaration is the creation of a new namespace. > Choice 3 > A declaration is the creation of a new variable. > Choice 4 > A declaration is the allocation of only a name to a variable. > Choice 5 > A declaration is the allocation of a name and properties to a variable. > > Тут я не совсем понял, что называется свойствами переменной > (и как переменная может иметь свойства не имея имени). Это не perl-specific вопрос, а вопрос теоретического плана на понимание разницы между declaration и definition. Подразумевался ответ 5. В Perl с обявлением и описанием некоторая путаница, но суть не меняется. Андрей --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/5284582d92c0.html, оценка из 5, голосов 10
|