- perl, backticks, exec etc, alexey9, 16:28 , 04-Окт-06 (1)
Ах да, это все #!/usr/bin/perl разумеется. - perl, backticks, exec etc, ACCA, 20:17 , 04-Окт-06 (2)
>Правильна ли такая конструкция? Попробуй так: my $dataToSign = "Some text\nSome text\nSome text\n"; my $signedQuery = `echo -ne "$dataToSign" | openssl dgst ... -hex`; >Так все верно генерируется. Чего я недопонимаю? Не ставь \n где попало.
- perl, backticks, exec etc, alexey9, 20:25 , 04-Окт-06 (3)
>>Правильна ли такая конструкция? > >Попробуй так: > >my $dataToSign = "Some text\nSome text\nSome text\n"; >my $signedQuery = `echo -ne "$dataToSign" | openssl dgst ... -hex`; > >>Так все верно генерируется. Чего я недопонимаю? > >Не ставь \n где попало. Однохренственно. Да \n там действительно не нужен, когда в форум писал поставил случайно. Собственно его нет в реальном коде. интересно то что если сделать так: print `echo -ne "$dataToSign`; , то получам на экране: ------ -ne Some text Some text Some text ------ не станно?
- perl, backticks, exec etc, AMDmi3, 22:51 , 04-Окт-06 (4)
>Так все верно генерируется. Чего я недопонимаю? Не надо так делать. Во-первых, плодятся лишние процессы (sh). Во-вторых, sh не понимает -ne (man sh: Only one of the -e and -n options may be specified.). В-третьих, нарветесь на проблемы с переводами строк/кавычками/обратными слешами в данных. Правильно: open(PIPE, "| openssl ... |"); print PIPE $dataToSign; print while(<PIPE>); close PIPE;
- perl, backticks, exec etc, alexey9, 23:07 , 04-Окт-06 (5)
>open(PIPE, "| openssl ... |"); >print PIPE $dataToSign; >print while(<PIPE>); >close PIPE; Хм. Странно но он результат в консоль валит при таком подходе ... my $out; ... $out = <PIPE>; ... Опять не въезжаю - вроде маны уже перечитал все
- perl, backticks, exec etc, AMDmi3, 23:34 , 04-Окт-06 (6)
>>open(PIPE, "| openssl ... |"); >>print PIPE $dataToSign; >>print while(<PIPE>); >>close PIPE; >Хм. Странно но он результат в консоль валит при таком подходе Точно, так тоже нельзя :) Правильный ответ - в perldoc perlipc, глава `Bidirectional Communication with Another Process' #!/usr/bin/perl use FileHandle; use IPC::Open2; $pid = open2(*OUT, *IN, "md5"); print IN "somedata"; close IN; $result = <OUT>; close OUT; waitpid($pid, 0); # чтобы зомбей не плодить print "Result: $result\n";
- perl, backticks, exec etc, alexey9, 23:41 , 04-Окт-06 (7)
>>>open(PIPE, "| openssl ... |"); >>>print PIPE $dataToSign; >>>print while(<PIPE>); >>>close PIPE; >>Хм. Странно но он результат в консоль валит при таком подходе > >Точно, так тоже нельзя :) >Правильный ответ - в perldoc perlipc, глава `Bidirectional Communication with Another Process' > > >#!/usr/bin/perl > >use FileHandle; >use IPC::Open2; > >$pid = open2(*OUT, *IN, "md5"); > >print IN "somedata"; >close IN; >$result = <OUT>; >close OUT; > >waitpid($pid, 0); # чтобы зомбей не плодить > >print "Result: $result\n"; блин, интересно а на площадке (на хостинге) дадут процесс запустить отдельный. Думаю нет. Надо проверить. В любом случае спасибо.
- perl, backticks, exec etc, AMDmi3, 23:45 , 04-Окт-06 (8)
- perl, backticks, exec etc, alexey9, 23:47 , 04-Окт-06 (9)
>>блин, интересно а на площадке (на хостинге) дадут процесс запустить отдельный. Думаю >>нет. Надо проверить. В любом случае спасибо. >А, по твоему, `` не запускают отдельный процесс? > >Кстати, имеет смысл посмотреть готовые модули. >http://search.cpan.org/~oesi/OpenSSL-0.09/OpenSSL/Digest.pm Не, уже смотрел, я немогу их собственно установить на площадке. Т.е. модули то ставятся а вот libopenssl'я нет и не будет, странно, но такая фот площадка.
- perl, backticks, exec etc, alexey9, 23:49 , 04-Окт-06 (10)
К тому же я как-то не въехал как ему подсовывать ключ. Документацию посмотрел так краем глаза - там почти ничего нет в man'е, просто времени не было.
- perl, backticks, exec etc, alexey9, 23:57 , 04-Окт-06 (12)
> >К тому же я как-то не въехал как ему подсовывать ключ. Документацию >посмотрел так краем глаза - там почти ничего нет в man'е, >просто времени не было. да. static
- perl, backticks, exec etc, AMDmi3, 23:51 , 04-Окт-06 (11)
>Не, уже смотрел, я немогу их собственно установить на площадке. Т.е. модули >то ставятся а вот libopenssl'я нет и не будет, странно, но >такая фот площадка. Хмм. Там openssl что-ли статически собран? У меня на FreeBSD /usr/bin/openssl слинкован с /usr/lib/libssl.so.4 и /lib/libcrypto.so.4. Ну, описанный способ с open2 вполне работоспособен, в случае чего.
- perl, backticks, exec etc, alexey9, 23:58 , 04-Окт-06 (13)
>>Не, уже смотрел, я немогу их собственно установить на площадке. Т.е. модули >>то ставятся а вот libopenssl'я нет и не будет, странно, но >>такая фот площадка. >Хмм. Там openssl что-ли статически собран? У меня на FreeBSD /usr/bin/openssl слинкован >с /usr/lib/libssl.so.4 и /lib/libcrypto.so.4. Ну, описанный способ с open2 вполне работоспособен, >в случае чего. да, static. Хотя попробую может в $HOME собрать. Может удастся. А как его юзать, походу вопрос сразу. Как подгрузить ключ?
- perl, backticks, exec etc, AMDmi3, 01:59 , 05-Окт-06 (14)
>да, static. >Хотя попробую может в $HOME собрать. Может удастся. А как его юзать, >походу вопрос сразу. Как подгрузить ключ? Ты про модуль? Не знаю, не пользовал. Если про open2, там можно ключи указывать и даже несколько команд, а-ля open2(*A, *B, "openssl -key1 | cat -n | wc -l | md5")
- perl, backticks, exec etc, alexey9, 05:31 , 06-Окт-06 (15)
>>да, static. >>Хотя попробую может в $HOME собрать. Может удастся. А как его юзать, >>походу вопрос сразу. Как подгрузить ключ? >Ты про модуль? Не знаю, не пользовал. Если про open2, там можно >ключи указывать и даже несколько команд, а-ля open2(*A, *B, "openssl -key1 >| cat -n | wc -l | md5") Спасибо, Уважаемый, за помощь &mdash все отлично работает. :)
|