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

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

Thread Status:
Not open for further replies.
  1. теща

    теща Экстрасенс

    Joined:
    14 Sep 2005
    Messages:
    2,027
    Likes Received:
    526
    Reputations:
    285
    ну если не тяжело по подробней розпиши , а то я уже задом на перед писал нихера не запускаетьсо , а так обидно и хочеццо запустить скрипт (((((((
     
  2. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    жмешь пуск -- выполнить -- вводишь cmd -- появляется консоль -- в ней вводишь -> perl script.pl -- это если скрипт находится в текушей открытой папке -- если нет то пиши perl и путь до скрипта тнапример C:\papka\sploit_tyt_legit.pl
     
  3. теща

    теща Экстрасенс

    Joined:
    14 Sep 2005
    Messages:
    2,027
    Likes Received:
    526
    Reputations:
    285
    ну вот ! так и делаю вот что пишет : "perl" не являеться внутренней или внешней командой, исполняемой программы или пакетным файлом.

    тут что-то не то
     
  4. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    народ!
    помогите, я чёта в рубиться не могу....
    кароч у меня есть около 60 фоток и мнe их надо переименовать с помощью перла! план таков...это => "SNC115XX.JPG" надо переименовать в это => 1-60".jpg" и так пока все фотки не переименуются!
    Mлин, как это осуществить?

    PS: тёща....как у тя в сплойте путь к перлу прописан?
     
    #124 Tw!m4, 13 Sep 2007
    Last edited: 13 Sep 2007
  5. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    Tw!m4

    1. открываешь диру ( opendir )
    2. считываешь содержимое диры в массив ( readdir )
    3. перееименовываешь в цикле каждый элемент массива ( foreach $file (@files) { )
    в блоке цикла проверяешь регулярным выражением соответствует ли имя файла тем, что нужно переименовать, если соответствует:
    rename $file, ++$num.'jpg';
    переменную $num инициализируешь нулем, за пределами блока, конечно..
     
    #125 Digimortal, 13 Sep 2007
    Last edited: 13 Sep 2007
  6. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0
    Ну вот, на сколько я понял, проходит эта всё таким путём


    Code:
    #!/usr/bin/perl -w
    
    #use strict;
    use File::Copy;
    
    my $num=0;
    my $dir="/path/to/dir";
    
    opendir(DIR, $dir) or die $!;
    @files=readdir(DIR);
    
    foreach $file (@files) {
    
       $_ =~ m/([a-zA-Z])\d+?/g;  # <= вот сдесь у меня проблема!
    
    rename $file, ++$num.'txt';
    }
    closedir(DIR);
    
    
    Я тока начал изучать Перлу и с регекспами у меня немножко( то есть оОчень большая =] ) не лажа, need help please! =]
     
  7. G1yuK

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

    Joined:
    25 May 2007
    Messages:
    41
    Likes Received:
    9
    Reputations:
    0

    теща Помоему у тебя perl не стоит. Попробуй просто в cmd введи perl -v .Такая команда показывает какая версия perl установлена. Если снова такая же мессага вылетит, значит переставляй Perl
     
  8. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    Tw!m4

    Code:
    #!/usr/bin/perl -w
    
    use strict;
    [COLOR=Red]#[/COLOR] use File::Copy;  ## это не нужно
    
    my $num=0;
    my $dir="/path/to/dir[COLOR=Red]/[/COLOR]";
    
    opendir(DIR, $dir) or die $!;
    [COLOR=Red]my[/COLOR] @files=readdir(DIR);
    
    foreach [COLOR=Red]my[/COLOR] $file (@files) {
    
    [COLOR=Red]#[/COLOR] $_ =~ m/([a-zA-Z])\d+?/g;  # <= вот сдесь у меня проблема!  ## про регексп я написал, исходя из того, что в дире с файлами, которые надо переименовать, могут находиться те, которые переименовывать не надо.. если это не так, то можно и без регулярного выражения обойтись.. но, допустим, файлы, которые надо переименовывать оканчиваются на 'JPG' (как у тебя написано), тогда мы переименовываем, проверяя на это:
    
    rename $dir.$file, $dir.++$num.'.jpg' if $file =~ /JPG/;  ## ну понятное дело ренейму надо знать в какой дире файлы эти лежат )
    }
    closedir(DIR);
    
     
    #128 Digimortal, 14 Sep 2007
    Last edited: 14 Sep 2007
    2 people like this.
  9. теща

    теща Экстрасенс

    Joined:
    14 Sep 2005
    Messages:
    2,027
    Likes Received:
    526
    Reputations:
    285
    ты был прав , переустановляю (((((....
     
  10. Tw!m4

    Tw!m4 Elder - Старейшина

    Joined:
    15 Jun 2007
    Messages:
    187
    Likes Received:
    19
    Reputations:
    0

    отлично! Всё сработало!
     
  11. malamut

    malamut New Member

    Joined:
    8 Sep 2007
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    работа с файлами

    Сорри за тупой вопрос. Нужно удалить из файла все строки, начинающиеся со "*". Делаю кривым путём
    Code:
    open (MYFILE, 'p.txt');
    open(TEMP,'>>p~.txt');
    while (<MYFILE>)
    {
      if ( substr($_, 0, 1) != "*")
      {
        chomp;
        print TEMP "*".$_."\n";
      }
    }
    close (MYFILE);
    close(TEMP);
    rename("p~.txt", "p.txt");
    Файл становится пустым (p.txt). Хотя первый символ определяет правильно. Подскажите в чём прикол?
    P.S. Я понимаю, что вся эта байда с двумя файлами вообще не нужна, но, по возможности, объясните в чём трабл, а не придумывайте простые решения. Заранее спасибо ;)
     
  12. demonoid

    demonoid Banned

    Joined:
    12 Jan 2007
    Messages:
    101
    Likes Received:
    111
    Reputations:
    27
    2 malamut
    Code:
    #!/usr/bin/perl -w
    use strict;
    use warnings;
    
    use constant BACKUP_PREFIX => 'backup_';
    use constant COMMENT       => '\x2A'; 
    
    use Getopt::Std;
    
    my %options;
    getopts( "f:" , \%options );
    
    if( !exists $options{f} )
    {
        &usage;
    }
    else
    {
      my $m_file  = $options{f};
      &sort( $m_file );
    }
    
    sub sort
    {
       my $m_file  = shift; 
       my $b_file  = BACKUP_PREFIX."$m_file";
       my $comment = COMMENT;
    
       my @save   = undef;
       my @backup = undef;
    
       open( my $file_m, "+<", $m_file ) || exit print "ERROR:Cant\'t open $m_file";
       open( my $file_b, ">", $b_file ) ;
    
       my $i = 0;
       my $b = 0;
       my $g = 0;
    
       while( <$file_m> )
       {
           if( substr($_, 0, 1) =~/$comment/  )
           {
              $b++;
           }
           else
           {
             $save[$g] = $_;
             $g++;
           }
           $backup[$i] = $_;
          $i++;
       }
    
    
       foreach ( @save )
       {
          print $file_m "$_";
       }
       close( $file_m );
    
       foreach ( @backup )
       {
           print $file_b "$_";
       }
       close( $file_b );
    
       &stats( $i,$b,$g,$m_file,$b_file );
    }
    
    sub stats
    {
       my $comment = COMMENT ;
       my( $all,$good,$bed,$file_m,$b_file  ) = ( shift,shift,shift,shift,shift );
       printf "\t In all the lines               : %.3d \n".
              "\t Lines Containing     '%.4s'    : %.3d \n".
              "\t Lines not Containing '%.4s'    : %.3d \n\n".
              "\t Lines, Containing is stored in : %s   \n".
              "\t A back-up copy is stored in    : %s   \n",$all,$comment,$good,$comment,$bed,$file_m,$b_file  ;
    }
    
    sub usage
    {
      print "\t  Usage   : $0 -f <file>   \n".
            "\t  Example : $0 -f file.txt \n";	
      exit 1;
    }
    Мой файл : file.txt
    Code:
    *line1
    line2
    
    line3
    *line4
    запускаем :
    Code:
     perl -f file.txt
    Статистика :
    Code:
    In all the lines               : 005
    Lines Containing     '\x2A'    : 002
    Lines not Containing '\x2A'    : 003
    
    Lines, Containing is stored in : file.txt
    A back-up copy is stored in    : backup_file.txt
    Смотрим файл:file.txt
    Code:
    line2
    
    line3
    бекап в файле backup_file.txt
     
    #132 demonoid, 15 Sep 2007
    Last edited: 20 Sep 2007
  13. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    malamut

    Code:
    open (MYFILE, 'p.txt');
    open(TEMP,'>>p~.txt');
    while (<MYFILE>) { 
        print TEMP '*'.$_ if substr($_, 0, 1) ne '*';  ## тут надо использовать ne, т.к. строка
        ## как вариант можно использовать регексп:
        ## print TEMP '*'.$_ if not /^\*/;
        ## кстати незачем делать chomp, а затем снова добавлять перенос строки...
    }
    close (MYFILE);
    close(TEMP);
    rename('p~.txt', 'p.txt');
    
     
  14. malamut

    malamut New Member

    Joined:
    8 Sep 2007
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Всем спасибо, разобрался
     
  15. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    использование strict; и как следствие my -- тут не совсем целесообразно тк скрипт маленький и я думаю имена всех переменных можно и самому запомнить - я это к тому чтобы новички не вбили себе что надо всегда юзать стрикт и все переменные объявлять через my - вот вообще никогда его не юзаю и пишу - нормально работающие скрипты -- тут есть выбор
     
    1 person likes this.
  16. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> вот вообще никогда его не юзаю и пишу - нормально работающие скрипты

    ну так ты серьезных скриптов никогда не писал.. :p

    я согласен, что в небольших скриптах использование strict вовсе не обязательно, тем не менее как тока размер твоих скриптов начинает увеличиваться, начинает увеличиваться и количество ошибок, число которых strict помогает сократить.. имхо, новичкам как раз рекомендуется юзать strict..

    кроме того, например, разработка веб-приложений под modperl, обязует программера использовать strict..
     
    1 person likes this.
  17. qwerty1

    qwerty1 New Member

    Joined:
    20 Jun 2007
    Messages:
    1
    Likes Received:
    1
    Reputations:
    0
    есть перл скрипт эксплоита для wordpress как его привести в рабочее положение,только если можно подробнее
     
  18. Spyder

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

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    perl mega_xek_0day_odept_ploet.pl
    Вообще поиск по форуму рулит
     
  19. ~EviL~

    ~EviL~ Elder - Старейшина

    Joined:
    14 Aug 2007
    Messages:
    169
    Likes Received:
    77
    Reputations:
    4
    Помогите пожалуйста, можете сказать где здесь ошибка:

    printf $socket ("GET %sindex.php?act=Login&CODE=autologin HTTP/1.0\nHost: %s\nAccept: */*\nCookie: member_id=%s; pass_hash=%s%s%s%s%s\nConnection: close\n\n",
     
  20. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    printf $socket ("GET %sindex.php?act=Login&CODE=autologin HTTP/1.0\nHost: %s\nAccept: */*\nCookie: member_id=%s; pass_hash=%s%s%s%s%s\nConnection: close\n\n"); мб так?
     
Thread Status:
Not open for further replies.