[Perl] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. azote

    azote New Member

    Joined:
    28 Mar 2008
    Messages:
    20
    Likes Received:
    0
    Reputations:
    0
    И правдо, ошибся, простите....
     
  2. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    ZET36:
    Win32::Registry, http://search.cpan.org/~jdb/libwin32-0.28/Registry/Registry.pm
    Юзай это для реестра...там вроде все написано
     
    1 person likes this.
  3. netf0x

    netf0x Elder - Старейшина

    Joined:
    27 Apr 2006
    Messages:
    42
    Likes Received:
    2
    Reputations:
    0
    вопрос

    Такой вопрос. Есть скрипт для веб)) :

    Code:
    
    use strict;
    use CGI qw/:standard/;
    my $cgi = new CGI;
    <br /><br />
    my $file = $cgi->param('file');
    <br /><br />
    # grab date base 
    $file =~ m/(.*).txt/;
    my $date = $1;
    <br /><br />
    my @images = <Images/$date/*.jpg>;
    my @audio = <Audio/$date/*.mp3>;
    <br /><br />
    <br /><br />
    print "Content-type: text/html\n\n";
    <br /><br />
    print "<html><body>";
    <br /><br />
    print "<!-- generatede -->";
    <br /><br />
    open(INPUT, "<$file");
    while (<INPUT>) {
    	# add breaks...
    	if (/^$/) {
    		print "<br /><br />";
    	}
    	print;
    }
    close(INPUT);
    <br /><br />
    print "<br />";
    <br /><br />
    foreach (@images) {
    	print "<img src='$_'><br /><br />";
    }
    <br /><br />
    print "<br />";
    <br /><br />
    print "<h3>Sound Bites</h3> (xxxxxxxx)<br /><br />";
    <br /><br />
    foreach (@audio) {
    	print "<a href='$_'>$_</a><br /><br />";
    
    
    
    Хотелось бы понять, кроме чтения произвольных файлов есть возможность исполнения команд или чего либо еще?
     
  4. Анжелика

    Анжелика Elder - Старейшина

    Joined:
    25 Mar 2008
    Messages:
    25
    Likes Received:
    36
    Reputations:
    -4
    выполнять команды неполучиться, так как в
    open(INPUT, "<$file");
    определено что открывается файл на чтение символом "<"
    если бы было
    open(INPUT, "$file");
    то можно было бы подставив пайп выполнять команды, типа
    .pl?file=|id
     
    3 people like this.
  5. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    Can't call method "scheme" on an undefined value at C:/Perl/lib/HTTP/Cookies.pm line 44.

    (v5.10.0 built for MSWin32-x86-multi-thread)

    как от этого избавиться?
     
  6. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    netf0x

    открывать файл надо так
    open(KARTINKA, '<', '4.jpg');

    где содержимое файла будет в Дескрипторе KARTINKA который прочитать можно так
    print <KARTINKA>;

    вот советую почитать учебник для новичков по перлу
    http://dump.ru/files/n/n6133429141/
    там есть раздел где описываются много функциий с файлами и папками
     
    1 person likes this.
  7. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    ошибка говорит "немогу пробить метод "scheme" в неопределённом значении в файле C:/Perl/lib/HTTP/Cookies.pm"
    эта ошибка содержится в 44 строке кода


    если можно неплохо бы увидеть сам код
     
  8. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    да ну

    http://www.activestate.com/Products/activeperl/

    PS мой скрипт читает почту на mail.ru.
    сначала запрос к http://win.mail.ru/cgi-bin/auth,
    потом идет по линку вида
    http://win.mail.ru/cgi-bin/checkcookie?id=765b5d705151745f19050219
    затем заходит в папку Входящие и читает письма.

    возможно это поможет
     
    #388 Piflit, 4 Apr 2008
    Last edited: 4 Apr 2008
  9. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Piflit хех я так и незнаю где у тебя ошибка невидя кода)) ну максимум могу посоветовать почитать вот это

    www.opennet.ru/base/dev/perl_lwp.txt.html

    (там есть описание метода cookie_jar интуиция подсказывает что напутал ты там в нём)
     
    #389 ZET36, 4 Apr 2008
    Last edited: 4 Apr 2008
  10. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Как ты такой ошибки добился то?
    Вот пример скрипта который логинится на мейл.ру, парсит список сообщений и скидывает в файл содержимое писем:
    Code:
    #!/usr/bin/perl -w
    use LWP::UserAgent;
    use HTTP::Cookies;
    if (@ARGV < 2){
    print "Usage: script.pl login password";
    exit;
    }
    
    ($login, $domain) = split(/@/,$ARGV[0]);
    $pwd   = $ARGV[1];
    
    $ua = LWP::UserAgent->new;
    $ua->cookie_jar(HTTP::Cookies->new(file => "cookies.txt"));
    
    $res = $ua->post( "http://win.mail.ru/cgi-bin/auth", {Login => $login, Domain => $domain, Password => $pwd} );
    $res = $res->as_string;
    
    open(FILE, '>>letters.txt') || die "Could not open letters.txt\n";
    if($res =~ /<HTML>(.*)<\/HTML>/) 
    	{
    	$ua->get($1);
    	
    	$res = $ua->get('http://win.mail.ru/cgi-bin/msglist?folder=0');
    	$res = $res->as_string;
    	
    	while($res =~ m/title="(.*?)"><a href="readmsg\?id=(.*?)"/g) 
    		{
    		print FILE "From: $1 ID: $2\n";
    		$msg = $ua->get('http://win.mail.ru/cgi-bin/readmsg?id='.$2)->as_string;
    		if($msg =~ /<div id=let_body>(.*?)<\/div>/ms){print FILE "Body:\n$1\n-----------------------------------------------------------";}
    			
    		}
    	
    	
    	}
    
     
    _________________________
  11. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    походу с перезаписью кук проблема.
    my $cookies = HTTP::Cookies->new();
    $ua->cookie_jar($cookies);

    ящики по очереди парсятся. значит в конце цикла надо $cookies->clear; ?
     
  12. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Можешь сlear, можешь файл удалять, как угодно.
     
    _________________________
    1 person likes this.
  13. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    неподскажите есть ли в перле возможность работы с ресурсами библиотек.
    ну например в джаваскрипте что бы показать картинку pagerror.gif хранящуюся в библиотеке shdoclc.dll оформлять путь к ней нужно так
    res://C:\WINDOWS\system32\shdoclc.dll/pagerror.gif

    дайте пожайлуста чтонибудь почитать об функциях работы с ресурсами в перле
     
  14. biophreak

    biophreak Elder - Старейшина

    Joined:
    3 Aug 2007
    Messages:
    348
    Likes Received:
    63
    Reputations:
    15
    Хм...ИМХО, скорее всего это реализовано в модулях Win32::*, глянь на CPAN'е
    Глянь модуль Win32::Exe, http://search.cpan.org/~smueller/Win32-Exe-0.11/lib/Win32/Exe.pm
    Может оно тебе надо? Вроде умеет работать с ресурсами(иконки точно), с exe-файлами, дллки - те же PE, может подцепит, я хз, не сталкивался =)
     
    #394 biophreak, 7 Apr 2008
    Last edited: 7 Apr 2008
  15. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    biophreak спасибо то что нужно
     
  16. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    опять начал постигать перл ) появился такой вопрос . как из текста :

    fsafsdtwret4wtg gwevdsgreww sid=q243W fsdfdewrtgdoprewtgdfhrrreg fsddfgb

    выдернуть sid=q243W ?
     
  17. Roba

    Roba Banned

    Joined:
    24 Oct 2007
    Messages:
    237
    Likes Received:
    299
    Reputations:
    165
    Code:
    $s='fsafsdtwret4wtg gwevdsgreww sid=q243W fsdfdewrtgdoprewtgdfhrrreg fsddfgb';
    if($s=~/(sid=\w{5})/) {print $1}
     
  18. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    а если кол-во символов рандомное ?
     
  19. Roba

    Roba Banned

    Joined:
    24 Oct 2007
    Messages:
    237
    Likes Received:
    299
    Reputations:
    165
    Code:
    $s='fsafsdtwret4wtg gwevdsgreww sid=q243W fsdfdewrtgdoprewtgdfhrrreg fsddfgb';
    if($s=~/(sid=\w{1,})/) {print $1}
     
    1 person likes this.
  20. $p01nt

    $p01nt Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    116
    Likes Received:
    20
    Reputations:
    1
    хмм... почему когда я использую :

    $inpoisk='fsafsdtwret4wtg gwevdsgreww sid=q243D wasfsdarwfv';
    $inpoisk=~/(sid=\w{1,})/;
    print $inpoisk;

    у меня выводит fsafsdtwret4wtg gwevdsgreww sid=q243D wasfsdarwfv ?
     
    #400 $p01nt, 13 Apr 2008
    Last edited: 13 Apr 2008
Thread Status:
Not open for further replies.