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

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


Сообщения - novice2

Страницы: [1]
1
Perl / pack() в unix
« : 18 Ноября 2004, 18:01:50 »
NeoNox
ИМХО это не поблажка, а корректнная работа. модификатор Z велит создать строку, завершенную 0. Я передаю пустую строку (ну это я ДОЛЖЕН сделать, там опциональные параметры). И пустая строка должна преобразоваться в 0 символов + байт 0 - итого 1 байт. Новый перл так и работает. Строка, завершенная 0 никогда не может быть короче 1 байта, теоретически. Это стандартный модуль Net::SMPP. И из-за этого бага неверно формируются пакеты протокола :(

2
Perl / pack() в unix
« : 18 Ноября 2004, 15:25:51 »
появилась возможность проверить на солярисе версию 5.8.5.
оказалось, дело в версии перла. в 5.0 pack() неверно работает для пустой строки. но там, где эта прога будет работать, перл обновить непросто :(

NeoNox
сама hexdump неоднократно проверена.
в таком варианте:
 
#!/usr/bin/perl -w
use strict;
my $v = pack(\'Z*\',\'\');
print \'length=\'.length($v).\' data=\'.hexdump($v);

sub hexdump {
  my $data = shift;
  my $res;
  for(my $i=$[; $i    print \'i=\'.$i.\' length=\'.length($data)."\\n";
    $res .= sprintf(\'%02x \',ord(substr($data,$i,1)));
    print "res=$res\\n";
  }
  return $res;
}

новый перл выдает:
i=0 length=1
res=00
length=1 data=00

а старый:
Use of uninitialized value at t3.pl line 4.
length=0 data=

3
Perl / pack() в unix
« : 18 Ноября 2004, 14:02:10 »
NeoNox
извини - не понял.
я написал программу. отладил на виндоус - работает. перенес на солярис - не работает. выяснилось, что данные формируются неверно - неправильно работает функция pack(\'Z*\', $str) если $str содержит пустую строчку.pack(\'Z*\'...) должна выдать null-terminated строку (завершенную символом с кодом 0). И когда строка пустая, то должен получиться один байт - 0. Для проверки этого факта и приведен тестовый пример.

4
Perl / pack() в unix
« : 18 Ноября 2004, 12:15:41 »
Добрый  день.
Столкнулся с тем, что по разному работает pack(). Сокращенный пример:

#!/usr/bin/perl -w
use strict;
my $v = pack(\'Z*\',\'\');
print \'length=\'.length($v).\' data=\'.hexdump($v);

sub hexdump {
    my $data = shift;
    my $res = \'\';
    for(my $i=$[; $i      $res .= sprintf(\'%02x \',ord(substr($data,$i,1)));
    }
    return $res;
}

под windows active perl 5.6.1 выдает
length=1 data=00

под perl 5.005_03 solaris  выдает
length=0 data=

а модуль страдает стандартный, не мой, его исправлять не хотелось бы...
есть идеи?

5
Perl / получить имя файла по хэндлу?
« : 28 Апреля 2003, 14:31:55 »
это понятно. но вопрос не об этом.
например есть функция. туда передается хэндл. внутри функции хочется получить имя.
это можно сделать, не передавая туда еще и имя?

вот текущее положение в файле никто же не передает куда ни поподя  параллельно с хэндлом. все его узнают когда нужно tell(FILE).
никак не найду аналогичное что-нибудь для имени.

6
Perl / получить имя файла по хэндлу?
« : 28 Апреля 2003, 13:45:26 »
доброе время суток.
может кто знает, как получить имя файла по его хендлу?
файл был уже ранее открыт функцией open:

open IFILE "test.txt";

спасибо.

7
спасибо.

8
PS: что бы подставить вместо ??exist??($class1)

9
Помогите правильно определить в рантайме:
существует ли процедура с данным именем?
То же самое для пакета?
Например типа

sub createObj {
  my $class = \'Fruit\';
  my $class1 = \'Fruit::Apple\';

  if( ??exist??($class1) ){
    return $class1->new();
  }else{
    return $class1->new();
  }
}

Спасибо.

10
Perl / Mail::Mailer
« : 12 Июля 2002, 08:16:14 »
Evgeny
напрямую - это SMTP?
хочешь сказать, что все равно потом все по SMTP идет?
а какой сервер используется (я же его не указываю)?

попутно вопрос - существуют ли стандарты на ответ о недоставке "non-delivery notice"? хочется обработать ситуацию, когда письмо вроде ушло, а попозже ответ - типа "не могу доставить".

11
Perl / Mail::Mailer
« : 10 Июля 2002, 15:29:54 »
Братья и сестры! Объясните новичку.
Как можно узнать результат посылки письма?

У меня на хосте нет sendmail. Почту отправляю с помощью Mail::Mailer. Стоит скорее всего qmail, но хочется универсальности в скрипте (Mail::Mailer автоматом выбирает среди sendmail, mail, smtp, qmail...).

Спасибо.

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