Автор Тема: Поясните кусочек кода, плиз!  (Прочитано 6913 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Поясните кусочек кода, плиз!
« : 31 Марта 2002, 12:43:15 »
Вот разбираю чужой скрипт, вот не понимаю, чтобы значило:
sub showfile() {
open(TXT, "html/".@_[0]);
while() { print $_; }
close(TXT);
}
Какой файл он пытается открыть? Откуда? Вообщем ХЕЛП!
Ну к чему все это, лучше бы водки выпили...

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Поясните кусочек кода, плиз!
« Ответ #1 : 31 Марта 2002, 12:47:05 »
Да, и ещё, что значит строчка в начале скрипта?
$| = 1;
К чему бы это?
Ну к чему все это, лучше бы водки выпили...

Оффлайн Боря Елкин

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webmetr.pips.ru
Поясните кусочек кода, плиз!
« Ответ #2 : 31 Марта 2002, 15:11:29 »
по идее  @_ - массив данных передаваемый функции. Но тогда должно быть не @_[0], а $_[0].
$|=1 - вывод перла не "буферизуется" (или как там), а сразу отдается клиенту, по мере поступления.

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Поясните кусочек кода, плиз!
« Ответ #3 : 01 Апреля 2002, 18:53:23 »
Цитировать
по идее @_ - массив данных передаваемый функции. Но тогда должно быть не @_[0], а $_[0].

Так что всё таки что этот кусочек скрипта делает?
Ну к чему все это, лучше бы водки выпили...

Оффлайн lodevar

  • Сеньор-Помидор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 757
  • +0/-0
  • 2
    • Просмотр профиля
    • http://lodevar.hut.ru
Поясните кусочек кода, плиз!
« Ответ #4 : 01 Апреля 2002, 18:55:51 »
Цитировать
Так что всё таки что этот кусочек скрипта делает?
По идее должен выводить содержимое файла, имя которого передается функции в качестве аргумента.
С наилучшими пожеланиями. LODEVAR

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
вота
« Ответ #5 : 01 Апреля 2002, 19:02:38 »
&showfile(file.txt);#что открыть

Откроет и выведет содержимое html/file.txt
 в исканиях.

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Поясните кусочек кода, плиз!
« Ответ #6 : 01 Апреля 2002, 20:02:08 »
А вносить "исправления и добавления":) Бори Елкина, или нет? Что скажете?
Ну к чему все это, лучше бы водки выпили...

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Поясните кусочек кода, плиз!
« Ответ #7 : 01 Апреля 2002, 20:03:43 »
Цитировать
&showfile(file.txt);#что открыть

Дык в скрипте это без file.txt, там нет параметров!
Это тогда какой файл он читает и выводит?
Ну к чему все это, лучше бы водки выпили...

Оффлайн lodevar

  • Сеньор-Помидор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 757
  • +0/-0
  • 2
    • Просмотр профиля
    • http://lodevar.hut.ru
Поясните кусочек кода, плиз!
« Ответ #8 : 01 Апреля 2002, 20:32:31 »
Цитировать
А вносить "исправления и добавления" Бори Елкина, или нет? Что скажете?
Можно вносить, а лучше сделать

sub your_sub
{
 my $first_var=$_[0];
 ....
}

Так то оно безопаснее будет!

Цитировать
Это тогда какой файл он читает и выводит?
Если не передается в кач-ве параметра имя файла, стало быть ничего он и не выведет кроме ошибки, типа

"html/" файл не найден!
С наилучшими пожеланиями. LODEVAR

Оффлайн Боря Елкин

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webmetr.pips.ru
Поясните кусочек кода, плиз!
« Ответ #9 : 01 Апреля 2002, 20:59:22 »
sub showfile() {
return unless @_;
my $fname=shift;
 if (open(TXT, "html/$fname")){
  while() { print $_; }
  close(TXT);
 }
}

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Поясните кусочек кода, плиз!
« Ответ #10 : 02 Апреля 2002, 09:37:55 »
Цитировать
Если не передается в кач-ве параметра имя файла, стало быть ничего он и не выведет кроме ошибки, типа

не-а
если вызов такого вида &showfile()  то передается $_
А вообще,  glebushka ты не самый лучший пример для "понимания" выбрал - кривоватый он ;) лучше купи книгу по Перл, посмотри Cookbook - там примеры полезнее для перловарения
 в исканиях.

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Поясните кусочек кода, плиз!
« Ответ #11 : 02 Апреля 2002, 09:40:58 »
Боря Елкин
;) если уж писать return unless @_;
То по логике стоило бы проверить еще и то, что передано, прежде чем открывать. Это я к тому, что если уж предохраняться, то полумерами не стоит обходиться :)
 в исканиях.

Оффлайн Боря Елкин

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webmetr.pips.ru
Поясните кусочек кода, плиз!
« Ответ #12 : 02 Апреля 2002, 11:27:05 »
Green Kakadu
Да нет, если ничего не передали, то зачем что-то пробовать открывать, вот и все. А так конечно... ;)

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Поясните кусочек кода, плиз!
« Ответ #13 : 02 Апреля 2002, 12:56:32 »
Цитировать
Да нет, если ничего не передали, то зачем что-то пробовать открывать,

а если ничего не передали ;)  то зачем подпрограмму вызывать?
 в исканиях.

Оффлайн Боря Елкин

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webmetr.pips.ru
Поясните кусочек кода, плиз!
« Ответ #14 : 02 Апреля 2002, 14:05:39 »
Green Kakadu

Цитировать
а если ничего не передали  то зачем подпрограмму вызывать?


К примеру, нас много, я пишу эту процедуру. Кто там и что там будет проверять перед ее вызовом, я не знаю

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28