Perl
Подскажите могут ли в PERL меняться переменные допустим
sub programs {
++$d
}
переменная $d увеличится на 1 но не более того может ли случиться так чтобы при следущем запуске (не в цикле) она получала значение 2
for ($G=1;$g<2;$g++){sub programs{
++$d
};}
я к этому коду уже рпиходил есть другое решение??
Такое вообще возможно?)
Во, РеДрам, вопрос к тебе) Крмое my, our, local и никак явно не объявленных есть еще какие варианты ограничения области видимости переменных? Классов не касаемся, это другая тема.. Я про простейшие built-in примочки. Хтя вообще меня другое волнует.. ТАк, для интереса, пытаюсь найти способ создать в perl статичную переминную (аналог static переменной в C++).
Такое вообще возможно?)
1. фигурные скобки разделяют область видимости.
пробуй например это
use strict;
&main();
sub main {
{
my $var = "Hola";
}
print $var;
}
perldoc constant (помоему это)
В примере ты меняешь глобальную переменную, отсюда делай вывод.
Мне на большинстве форумов отвечали чтобы я переменную в файле хранил я так и сделал вот код:
$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
Но этот скрипт неработает ...:( почему???
perldoc -f seek
perldoc -f truncate
perldoc -f flock <-обратить внимание на это
@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.
Вдобавок почитай про 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'} ссылка на имя
В чем ошибка??
то есть вызвав функ. bz 100 раз
//sub bz { my $i++; }
на сотый вызов мы получим переменную $i (в пределах функции) со значением 99..
Вот теперь вопрос, как сделать чтобы такое было возможно? Ведь выполнив этот код я получу $i = 0, и ничего больше.. Обламывает:)) Помогитя!! Глобальных переменных не предлагать)
В чем ошибка??
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 я не встречал это...
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 я не встречал это...
Спасибо за столь обширный коментарий:)
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"??