Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - webser

Страницы: [1] 2
1
Perl / Выбор по шаблону
« : 18 Ноября 2008, 17:57:38 »
Спасибо...

2
Perl / Выбор по шаблону
« : 18 Ноября 2008, 15:47:16 »
Возникла задача разобрать строку по определенным правилам.
Например, разбить
$articul = "11/3-0055"  на 11 (до /) и 3 (между / и - )
Как сделать первое - нашел -
$tmp_articul = ($articul=~/^(\\w+)\\//)[0]; # выделение части из артикула для идентификации
print "articul :::: ", $articul,"   |     часть :::: ", $tmp_articul,"
";

получаем $tmp_articul = 11

А как достать комбинацию символов между / и - . т.е. 3 - никак. И так, и эдак пробовал, в инете и книги смотрел - не получается.
Помогите получить выражение.

Заранее благодарен.

P.S. Может можно сразу в массив получить три переменные - 11, 3 и 0055

3
Perl / Неправильно обнуляется список
« : 21 Марта 2008, 16:15:53 »
рекомендуют обнулять так:
my @Special = ();

Но это программным средством. Но у меня на локальном сервере все работает и БЕЗ обнуления !!! Значит можно что-то изменить в НАСТРОЙКАХ Apache (httpd.conf) и не заморачиваться на обнуление.
Что скажите?

4
Perl / Неправильно обнуляется список
« : 21 Марта 2008, 15:02:40 »
Ха! Дольше писал.....
ерфтлы, что в переводе означает thanks  ;-))))))))))))))))))))))))))))))))))

5
Perl / Неправильно обнуляется список
« : 21 Марта 2008, 13:53:02 »
Суть ::: на локальном сервере все нормально работает - список не наращивается (видно в настройках Apache так сделано.) Тот же скрипт на внешнем хостинге (Zenon) дает наращивание списка при работе.

$file = $path.$country."/clients.dat"; # указание файла на сервере

open(FILE,"$file");
my @list = ;
close(FILE);

# формирование списка на вывод
# my @Special = ""; # Обнуляем список
foreach (@list) {
my ($spec, $id, $name, $txt, $logo, $link) = split(/$delimiter1/);
if ($spec eq "*") { # выбираем строки для массива @Special
push (my @Special, $_);
}
}
#подсчет записей в файле
$count = @Special;

#отладочная песать
print qq!

Число Клиентов = $count

!;
foreach (@Special) {
print qq!
$_ |
!;
}

Результата работы
Число Клиентов = 53
*#0002#3 канал### | *#0005#Cool Air### | *#0007#European Food Group### | *#0008#Home Net Telecom (HNT)### | *#0016#Абсолют Банк### | ..........
Перезагружаем страницу :
Число Клиентов = 106
*#0002#3 канал### | *#0005#Cool Air### | *#0007#European Food Group### | *#0008#Home Net Telecom (HNT)### | *#0016#Абсолют Банк### | *#0020#Агрохимбанк### | *#0512#ИД «Аксель Шпрингер Раша»### |........
и т.д.

поставил (раскоментировал) строку
my @Special = ""; # Обнуляем список

Помогло, список перестал наращиваться, но в начале списка появился нулевой элемент и список увеличился на 1 !!!

Число Клиентов = 54
| *#0002#3 канал### | *#0005#Cool Air### | *#0007#European Food Group### | *#0008#Home Net Telecom (HNT)### | *#0016#Абсолют Банк### | *#0020#Агрохимбанк### |

ВОПРОС :::: Как с этим бороться - что-то изменить в коде или в настройках httpd.conf

Заранее спасибо

6
Perl / Поиск файлов в каталоге по "маске"
« : 18 Марта 2008, 15:56:34 »
Thanks... Разобрался..
Сделал

@tmp_line = split (/[.-]/, $listfile[$i]); с последующей подстановкой нужных $tmp_line[0] и т.д.

И с командной строкой разобрался... Тупил, однако..

7
Perl / Поиск файлов в каталоге по "маске"
« : 18 Марта 2008, 14:51:42 »
Я смотрю через броузер прямое обращение к файлу описания (у меня file:///C:/Perl/html/index.html).

А где надо вводить perldoc -f split ?

8
Perl / Поиск файлов в каталоге по "маске"
« : 18 Марта 2008, 14:49:55 »
Извини за глупый вопрос : а где надо набрать эту строку perldoc -f split ?

9
Perl / Поиск файлов в каталоге по "маске"
« : 18 Марта 2008, 08:39:02 »
ДОПОЛНИТЕЛЬНО :::

как одним махом раскидать имя файла, например 0504-33-1-1.gif, на 4 переменные со значениями 0504, 33, 1  и 1?

10
Perl / Поиск файлов в каталоге по "маске"
« : 17 Марта 2008, 00:01:57 »
СУТЬ ::: Есть каталог с графическими файлами, названными по правилам $id1-$id2-$id3-[какой-то номер от 1 до ...].gif

Переменные $id1, $id2, $id3 известны до осуществления поиска и равны 0005, 33 и 1 соответственно. Пробовал

$dirname = $path."projects/off/";   # указание файла на сервере
opendir (DIR, $dirname);
@tmp_listfile = grep{"$id1-$id2-$id3-*.gif"} readdir(DIR);
closedir (DIR);

Получил

. | .. | 0005-33-1-1.gif | 0005-33-1-2.gif | 0075-60-1-1.gif | 0075-60-1-2.gif | 0076-35-1-1.gif | 0076-35-1-2.gif | 0195-35-1-1.gif | 0195-35-1-2.gif | 0195-35-1-3.gif | 0298-33-1-1.gif | 0298-34-1-1.gif | 0500-36-1-1.gif | 0502-36-1-1.gif | 0503-31-1-1.gif | 0503-31-1-2.gif | 0503-31-1-3.gif | 0504-33-1-1.gif | 0505-34-1-1.gif | 0506-34-1-1.gif | 0507-35-1-1.gif | 0507-35-1-2.gif | 0507-35-1-3.gif | 0508-34-1-1.gif | 0509-33-1-1.gif | 0510-33-1-1.gif | 0510-33-1-2.gif | 0510-33-2-1.gif | 0510-33-2-2.gif | 0511-33-1-1.gif | 0512-34-1-1.gif | 0512-34-1-2.gif | 0512-34-1-3.gif |

Как мне в grep учесть мои переменные, что-бы искал только нужные? и как можно избавиться от уровней вложенности в массиве  @tmp_listfile - . и ..

Может можно еще как найти? Проще и легче?....

Заранее благодарен..

P.S.
Сделал так -
@files = glob("$dirname$id1-$id2-$id3-*.gif");
print ">>files :::   ",@files;

Все ищет как надо, только с путями к файлам :
>>files ::: V:/localhost/www/projects/off/0005-33-1-1.gifV:/localhost/www/projects/off/0005-33-1-2.gif
Это решается путем выделения имени файла  из всего пути :
for ($i=0;$i<@files;$i++){   
$files[$i] =~ s!^.*/!!;
}
print ">>files2 :::   ",@files;

Получаем нужное   >>files2 ::: 0005-33-1-1.gif0005-33-1-2.gif

НО НАВЕРНЯКА ЕСТЬ ПУТЬ ПРОЩЕ И ЛЕГЧЕ - ПОДСКАЖИТЕ, ПЛИЗ

11
ФАНТАСТИКА - РАБОТАЕТ !!!

И почему у меня не работало? Что-бы избежать ошибок в будущем - вроде ТО ЖЕ самое делал!

12
Продолжение мытарств :::
Поставил подробную ОТЛАДОЧНУЮ печать (данные файла - те же)

my $firm ="";
for ($i=0;$i<@list;$i++)
{
my ($tmp_id, $tmp_firm, $tmp_resume, $tmp_logo, $tmp_link) = split(/$delimiter1/,$list[$i]);

print qq!
id1 :::: $id1 | tmp_id :::: $tmp_id | === | firm ::: $firm >>>>> tmp_firm ::: $tmp_firm

!;

if ($tmp_id eq $id1) {
my $firm = $tmp_firm;
print qq!
OK ::::::: id1 :::: $id1 | tmp_id :::: $tmp_id | === | firm ::: $firm >>>>> tmp_firm ::: $tmp_firm

!;
}
}
print "
firm2 = ".$firm."\\n\\n";


Результаты работы скрипта ::::

id1 :::: 0005 | tmp_id :::: 0001 | === | firm ::: >>>>> tmp_firm ::: 2К-аудит
id1 :::: 0005 | tmp_id :::: 0002 | === | firm ::: >>>>> tmp_firm ::: 3 канал
id1 :::: 0005 | tmp_id :::: 0003 | === | firm ::: >>>>> tmp_firm ::: BBM
id1 :::: 0005 | tmp_id :::: 0004 | === | firm ::: >>>>> tmp_firm ::: Brother
id1 :::: 0005 | tmp_id :::: 0005 | === | firm ::: >>>>> tmp_firm ::: Cool Air
OK ::::::: id1 :::: 0005 | tmp_id :::: 0005 | === | firm ::: Cool Air >>>>> tmp_firm ::: Cool Air
id1 :::: 0005 | tmp_id :::: 0006 | === | firm ::: >>>>> tmp_firm ::: De\'Longhi
id1 :::: 0005 | tmp_id :::: 0007 | === | firm ::: >>>>> tmp_firm ::: European Food Group
id1 :::: 0005 | tmp_id :::: 0008 | === | firm ::: >>>>> tmp_firm ::: Home Net Telecom (HNT)
id1 :::: 0005 | tmp_id :::: 0009 | === | firm ::: >>>>> tmp_firm ::: Imac
id1 :::: 0005 | tmp_id :::: 0010 | === | firm ::: >>>>> tmp_firm ::: Incity

firm2 =

ПОЧЕМУ ?????????????????????????!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

13
Суть:: есть цикл, где читается инфа из файла и сравниваются переменная с полученной ранее.

# поиск наименования компании
for ($i=0;$i<@list;$i++)
{
my ($tmp_id, $tmp_firm, $tmp_resume, $tmp_logo, $tmp_link) = split(/$delimiter1/,$list[$i]);

print qq!
id1 :::: $id1 | tmp_id :::: $tmp_id

!;

if ($tmp_id eq $id1) {
my $firm = $tmp_firm;
}
}

Видим ::

.................
id1 :::: 0005 | tmp_id :::: 0004
id1 :::: 0005 | tmp_id :::: 0005
id1 :::: 0005 | tmp_id :::: 0006
id1 :::: 0005 | tmp_id :::: 0007
..................

Проблема :: не происходит сравнение НИКАК - при отладочной печати видно, что переменные (0005) есть и одинаковые, а if с eq - НЕ ХОЧЕТ и my $firm - ПУСТАЯ!!! В ЧЕМ ДЕЛО?

Заранее спасибо за БЫСТРЫЙ и СКОРЫЙ ответ.

P.S. Может ModPerl глючит?

P.S.S Вот код файла, который парсим

0001#2К-аудит###
0002#3 канал###
0003#BBM###
0004#Brother###
0005#Cool Air###
0006#De\'Longhi###
0007#European Food Group###
0008#Home Net Telecom (HNT)###
0009#Imac###
0010#Incity###

14
Perl / подключение pm-модулей
« : 10 Марта 2008, 18:12:50 »
Я посмотрел http.conf - куда поставить-то... Да ладно... Вы видно тоже НАЧИНАЮЩИЙ....
Я нашел, в чем дело (и Вам разъясняю, что-б знали, а не советовали стекла протирать, когда шины сдулись)  :::::

Я разбирался с готовыми кодами и упустил вот что ::: там было ::::
 ##################################################
#########################
# User defined variables
##################################################
#########################

package wwwvars;

require Exporter;
@ISA = qw (Exporter);
@EXPORT = qw(@EXPORT_OK);

@EXPORT_OK = qw(%config);
use vars qw(%config);
use strict;

# Server root directory
$config{\'srv_root\'} = "V:/имя сервера/www";
# $config{\'srv_root\'} = "/home/clients/имя сервера/public_html";

1;

А я этот блок по неразумению "похерил".....

Сейчас поставил так, как выше - все заработало....
Спасибо за "советы", пользуйтесь....

15
Perl / подключение pm-модулей
« : 10 Марта 2008, 17:34:58 »
Я и задал - четко сформулировал исходные данные, выходные ::: прошу указать где засада. Вместо беллитристики типа  "50€/строчка" давно бы написали - вот сюда ставишь ХХХХХХХХХХХХ и должно работать, а если нет - тогда YYYYYYYYYYYYYYY вот туда.
Чего изголяться-то....

Страницы: [1] 2