Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Perl

6.8K
06 апреля 2004 года
tion
6 / / 06.04.2004
Вопрос
Подскажите могут ли в PERL меняться переменные допустим
sub programs {
++$d
}
переменная $d увеличится на 1 но не более того может ли случиться так чтобы при следущем запуске (не в цикле) она получала значение 2
for ($G=1;$g<2;$g++){sub programs{
++$d
};}
я к этому коду уже рпиходил есть другое решение??
300
07 апреля 2004 года
ReDrum
689 / / 20.04.2000
В примере ты меняешь глобальную переменную, отсюда делай вывод.
287
08 апреля 2004 года
Shiizoo
958 / / 14.03.2004
Во, РеДрам, вопрос к тебе) Крмое my, our, local и никак явно не объявленных есть еще какие варианты ограничения области видимости переменных? Классов не касаемся, это другая тема.. Я про простейшие built-in примочки. Хтя вообще меня другое волнует.. ТАк, для интереса, пытаюсь найти способ создать в perl статичную переминную (аналог static переменной в C++).
Такое вообще возможно?)
300
08 апреля 2004 года
ReDrum
689 / / 20.04.2000
Цитата:
Originally posted by Shiizoo
Во, РеДрам, вопрос к тебе) Крмое my, our, local и никак явно не объявленных есть еще какие варианты ограничения области видимости переменных? Классов не касаемся, это другая тема.. Я про простейшие built-in примочки. Хтя вообще меня другое волнует.. ТАк, для интереса, пытаюсь найти способ создать в perl статичную переминную (аналог static переменной в C++).
Такое вообще возможно?)


1. фигурные скобки разделяют область видимости.
пробуй например это

Код:
#!/usr/bin/perl -w
use strict;

&main();

sub main {
    {
      my $var = "Hola";
    }

    print $var;
}


perldoc constant (помоему это)
6.8K
09 апреля 2004 года
tion
6 / / 06.04.2004
Цитата:
Originally posted by ReDrum
В примере ты меняешь глобальную переменную, отсюда делай вывод.


Мне на большинстве форумов отвечали чтобы я переменную в файле хранил я так и сделал вот код:
$bmg = open(htmls,"users.txt");
@sod = <htmls>;
for ($h=4+$fo;$h<9;){
print filehtms @sod[++$h]."
";
$dg = open(jo,">number.txt");
$ho = <jo>;
$fo = $ho+4;
print jo $fo;}
до этого переменная в файле number.txt была равна 0
Но этот скрипт неработает ...:( почему???

283
09 апреля 2004 года
Alone
910 / / 20.11.2002
perldoc -f open
perldoc -f seek
perldoc -f truncate
perldoc -f flock <-обратить внимание на это
300
09 апреля 2004 года
ReDrum
689 / / 20.04.2000
Цитата:
Originally posted by tion
 
Код:
$bmg = open(htmls,"users.txt");
@sod = <htmls>;
for  ($h=4+$fo;$h<9;){
           print filehtms @sod[++$h]."
";
         $dg = open(jo,">number.txt");
           $ho = <jo>;
         $fo = $ho+4;
           print jo $fo;}



Вдобавок почитай про strict.

6.8K
10 апреля 2004 года
tion
6 / / 06.04.2004
Цитата:
Originally posted by ReDrum


Вдобавок почитай про strict.


Спасибо за помощь я немного нехороший алгоритм придумал я исправил ошибку теперь все заработало но у меня новый вопрос:)
По сути программа ясна как белый день но вот берет и невыполняется:(
$chder = chdir("D:\\Site\\Apache\\cgi-bin\\");
$openfile = open(filer,"names.txt");
@yer=<filer>;
for ($f=0;$f<$#yer;++$f){
if ( @yer[$f] == $FORM{'name'}){ print "You are registered!";} else { &creatlog };}
sub creatlog {операторы;}
$FORM {'name'} ссылка на имя
В чем ошибка??

287
10 апреля 2004 года
Shiizoo
958 / / 14.03.2004
Ой РеДрам) Ой сипец) Я вот, без шуток, поражаюсь.. Поражаюсь тому, что вы не зная кто и что, принимаете меня за человека только вчера открывшего perl))) Без обид, но особенности использования блоков должны знать все) Даже ламосы) Это везде и во всех языках, ну с различиями конечно, но небольшими) Перезадам вопрос) Есть ли в perl аналог static из c++?? Поясняю static тем, кто не знает. Это такая переменная, которая инициализируется однажды при входе в блок, и при каждом следующем проходе блока она автоматом получает свое старое значение..

то есть вызвав функ. bz 100 раз

//sub bz { my $i++; }

на сотый вызов мы получим переменную $i (в пределах функции) со значением 99..

Вот теперь вопрос, как сделать чтобы такое было возможно? Ведь выполнив этот код я получу $i = 0, и ничего больше.. Обламывает:)) Помогитя!! Глобальных переменных не предлагать)
283
10 апреля 2004 года
Alone
910 / / 20.11.2002
Цитата:
Originally posted by tion
В чем ошибка??


tion ты что издеваешся?
вот код:
print $a;
найдите здесь ошибку

нам неизветно что должна делать твоя программа, мы не телепаты и мы не знаем что ты подразумеваеш под "ошибкой"
(это может быть даже 404 или 500...)

1. почему ты не обрабатываеш ошибки?
$chder = chdir("D:\\Site\\Apache\\cgi-bin\\");
$openfile = open(filer,"names.txt");
обе эти функции возращают результат работы 1 если все ок или 0 если нет
ЗАЧЕМ ты эти результаты сохранаеш в переменных?
начни с этого и убедись что они выполнелись удачно
chdir("D:\\Site\\Apache\\cgi-bin\\") or print $!;
open(filer,"names.txt") or print $!;

2.@yer=<filer>;
тебе обязательно хранить весь файл в массиве? ты его(массив) дальше планируеш использовать?
если нет делай такж
while(my $line=<filer>)
{
print $line;
}
или так
while(<filer>)
{
print $_;
}
3. @yer[$f] это ты откуда взял,
нет пока это работает но The Ларри обещал в будущем убрать это(по слухам)
влюбом случае делай так @yer->[$f] или так $yer[$f]
4. $f<$#yer; возможно ты так и хотел но думаю ты хотел всетаки перебрать ВСЕ элементы
поэтому либо так $f<=$#yer; либо так $f<@yer;

P.S.
2Shiizoo
я незнаю куда делся Mike и Joker...
поэтому просто взываю к твоему разуму и совести, 1 топик 1 вопрос(исклчая конечно флейм и специфичные вопросы), особенно если не ты автор топика, для флейма есть отдельный раздел.
P.P.S. в perl я не встречал это...

6.8K
10 апреля 2004 года
tion
6 / / 06.04.2004
Цитата:
Originally posted by Alone

tion ты что издеваешся?
вот код:
print $a;
найдите здесь ошибку

нам неизветно что должна делать твоя программа, мы не телепаты и мы не знаем что ты подразумеваеш под "ошибкой"
(это может быть даже 404 или 500...)

1. почему ты не обрабатываеш ошибки?
$chder = chdir("D:\\Site\\Apache\\cgi-bin\\");
$openfile = open(filer,"names.txt");
обе эти функции возращают результат работы 1 если все ок или 0 если нет
ЗАЧЕМ ты эти результаты сохранаеш в переменных?
начни с этого и убедись что они выполнелись удачно
chdir("D:\\Site\\Apache\\cgi-bin\\") or print $!;
open(filer,"names.txt") or print $!;

2.@yer=<filer>;
тебе обязательно хранить весь файл в массиве? ты его(массив) дальше планируеш использовать?
если нет делай такж
while(my $line=<filer>)
{
print $line;
}
или так
while(<filer>)
{
print $_;
}
3. @yer[$f] это ты откуда взял,
нет пока это работает но The Ларри обещал в будущем убрать это(по слухам)
влюбом случае делай так @yer->[$f] или так $yer[$f]
4. $f<$#yer; возможно ты так и хотел но думаю ты хотел всетаки перебрать ВСЕ элементы
поэтому либо так $f<=$#yer; либо так $f<@yer;

P.S.
2Shiizoo
я незнаю куда делся Mike и Joker...
поэтому просто взываю к твоему разуму и совести, 1 топик 1 вопрос(исклчая конечно флейм и специфичные вопросы), особенно если не ты автор топика, для флейма есть отдельный раздел.
P.P.S. в perl я не встречал это...


Спасибо за столь обширный коментарий:)

6.8K
10 апреля 2004 года
tion
6 / / 06.04.2004
Цитата:
Originally posted by Alone

tion ты что издеваешся?
вот код:
print $a;
найдите здесь ошибку

нам неизветно что должна делать твоя программа, мы не телепаты и мы не знаем что ты подразумеваеш под "ошибкой"
(это может быть даже 404 или 500...)

1. почему ты не обрабатываеш ошибки?
$chder = chdir("D:\\Site\\Apache\\cgi-bin\\");
$openfile = open(filer,"names.txt");
обе эти функции возращают результат работы 1 если все ок или 0 если нет
ЗАЧЕМ ты эти результаты сохранаеш в переменных?
начни с этого и убедись что они выполнелись удачно
chdir("D:\\Site\\Apache\\cgi-bin\\") or print $!;
open(filer,"names.txt") or print $!;

2.@yer=<filer>;
тебе обязательно хранить весь файл в массиве? ты его(массив) дальше планируеш использовать?
если нет делай такж
while(my $line=<filer>)
{
print $line;
}
или так
while(<filer>)
{
print $_;
}
3. @yer[$f] это ты откуда взял,
нет пока это работает но The Ларри обещал в будущем убрать это(по слухам)
влюбом случае делай так @yer->[$f] или так $yer[$f]
4. $f<$#yer; возможно ты так и хотел но думаю ты хотел всетаки перебрать ВСЕ элементы
поэтому либо так $f<=$#yer; либо так $f<@yer;

P.S.
2Shiizoo
я незнаю куда делся Mike и Joker...
поэтому просто взываю к твоему разуму и совести, 1 топик 1 вопрос(исклчая конечно флейм и специфичные вопросы), особенно если не ты автор топика, для флейма есть отдельный раздел.
P.P.S. в perl я не встречал это...


И еще извини конечно но я еще на стадии обучения что такое
while(my $line=<filer>)
{
print $line;
}
вот здесь вот "my"??

287
11 апреля 2004 года
Shiizoo
958 / / 14.03.2004
Да, точняк, не буду так делать, верней постараюсь так не делать=)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог