Forum Webscript.Ru
Программирование => Perl => Тема начата: glebushka от 31 Марта 2002, 12:43:15
-
Вот разбираю чужой скрипт, вот не понимаю, чтобы значило:
sub showfile() {
open(TXT, "html/".@_[0]);
while() { print $_; }
close(TXT);
}
Какой файл он пытается открыть? Откуда? Вообщем ХЕЛП!
-
Да, и ещё, что значит строчка в начале скрипта?
$| = 1;
К чему бы это?
-
по идее @_ - массив данных передаваемый функции. Но тогда должно быть не @_[0], а $_[0].
$|=1 - вывод перла не "буферизуется" (или как там), а сразу отдается клиенту, по мере поступления.
-
по идее @_ - массив данных передаваемый функции. Но тогда должно быть не @_[0], а $_[0].
Так что всё таки что этот кусочек скрипта делает?
-
Так что всё таки что этот кусочек скрипта делает?
По идее должен выводить содержимое файла, имя которого передается функции в качестве аргумента.
-
&showfile(file.txt);#что открыть
Откроет и выведет содержимое html/file.txt
-
А вносить "исправления и добавления":) Бори Елкина, или нет? Что скажете?
-
&showfile(file.txt);#что открыть
Дык в скрипте это без file.txt, там нет параметров!
Это тогда какой файл он читает и выводит?
-
А вносить "исправления и добавления" Бори Елкина, или нет? Что скажете?
Можно вносить, а лучше сделать
sub your_sub
{
my $first_var=$_[0];
....
}
Так то оно безопаснее будет!
Это тогда какой файл он читает и выводит?
Если не передается в кач-ве параметра имя файла, стало быть ничего он и не выведет кроме ошибки, типа
"html/" файл не найден!
-
sub showfile() {
return unless @_;
my $fname=shift;
if (open(TXT, "html/$fname")){
while() { print $_; }
close(TXT);
}
}
-
Если не передается в кач-ве параметра имя файла, стало быть ничего он и не выведет кроме ошибки, типа
не-а
если вызов такого вида &showfile() то передается $_
А вообще, glebushka ты не самый лучший пример для "понимания" выбрал - кривоватый он ;) лучше купи книгу по Перл, посмотри Cookbook - там примеры полезнее для перловарения
-
Боря Елкин
;) если уж писать return unless @_;
То по логике стоило бы проверить еще и то, что передано, прежде чем открывать. Это я к тому, что если уж предохраняться, то полумерами не стоит обходиться :)
-
Green Kakadu
Да нет, если ничего не передали, то зачем что-то пробовать открывать, вот и все. А так конечно... ;)
-
Да нет, если ничего не передали, то зачем что-то пробовать открывать,
а если ничего не передали ;) то зачем подпрограмму вызывать?
-
Green Kakadu
а если ничего не передали то зачем подпрограмму вызывать?
К примеру, нас много, я пишу эту процедуру. Кто там и что там будет проверять перед ее вызовом, я не знаю
-
вообще, glebushka ты не самый лучший пример для "понимания" выбрал - кривоватый он лучше купи книгу по Перл, посмотри Cookbook - там примеры полезнее для перловарения
Ты будешь смеяться, но этот скрипт я взял не для "понимания", а для увелечения функциональности этого самого скрипта:).
Он и до моего "редактирования" грязно ругался при выполнении, теперь же орёт благим матом:).