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

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

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

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

    Joined:
    11 May 2007
    Messages:
    133
    Likes Received:
    92
    Reputations:
    11
    Code:
    $ cat test.txt
    line1;aaaaa
    line2;bbbbbb
    line3;ccc
    line4;dddd
    $ perl -ne '/(.+)(;.+)(?{ print "$1;${\substr($2,int length($2)\/2)}\n" })/' file.txt
    line1;aaa
    line2;bbbb
    line3;cc
    line4;ddd
    $  
     
  2. zeppe1in

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

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    тема такая в читаем из бинарного фаила 4 ре байта.
    read BINFILE, $x, 4;
    байты такие 96 02 00 00
    из них нужно получить
    00000296
    а потом в десятичную систему
    662
    как сделать? что то у меня с унпаком и принтф ни чо не выходит.
     
  3. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    Сорри я не совсем так выразил то что хотел, я имел в виду что должно удаляться все то что стот перед знаком ; включая его самого.
     
  4. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Ну замени регулярку на $_=~ /;(.+)/
     
    _________________________
  5. n3m0

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

    Joined:
    11 May 2007
    Messages:
    133
    Likes Received:
    92
    Reputations:
    11
    Code:
    $ cat file
    line1;aaaaa
    line2;bbbbbb
    line3;ccc
    line4;dddd
    line5
    $ perl -F\; -nae 'print $F[1]||$F[0]' file
    aaaaa
    bbbbbb
    ccc
    dddd
    line5
    $
     
  6. constanta

    constanta New Member

    Joined:
    19 Sep 2007
    Messages:
    33
    Likes Received:
    2
    Reputations:
    0
    Доброго времени суток вам.
    Вопрос такой:
    Есть Файл большого размера. Он загоняется в массив а потом с массивом производятся различные действия.

    ВНИМАНИЕ ВОПРОС -- КАК МОЖНО СЧИТАТЬ ЕГО ПО ЧАСТЯМ ? (допустим по 2 мб)
    Или же каким образом можно ускорить процесс обработки файла ?
     
  7. brasco2k

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

    Joined:
    23 Nov 2007
    Messages:
    258
    Likes Received:
    91
    Reputations:
    0
    простой массив + fgets помогут.
     
  8. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    В перле нету функции fgets)
     
    _________________________
  9. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    $var1 = <>; # Прочитать одну строку файла
    @var1 = <>; # Прочитать все строки файла в массив @var1
     
  10. zeppe1in

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

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    constanta
    read FILEHANDLE,SCALAR,LENGTH,OFFSET Считывает LENGTH байт данных из FILEHANDLE в переменную SCALAR. Возвращает число считанных байт или неопределенное значение в случае ошибки.
    также
    seek FILEHANDLE, POSITION, WHENCE Позволяет установить курсор в файле, определенном в переменной FILEHANDLE, на позицию POSITION в режиме, указанном в переменной WHENCE. Если переменная WHENCE содержит значение 0, то позиция отсчитывается от начала файла, если 1 то от текущей позиции и если 2, то от конца файла. Возвращает 1 в случае успеха и 0 иначе.
     
  11. constanta

    constanta New Member

    Joined:
    19 Sep 2007
    Messages:
    33
    Likes Received:
    2
    Reputations:
    0
    Предложите какой то вариант. Ну не может же быть такого что бы в perl не было решения такого вопроса. НУ Очень надо).
     
  12. demond

    demond Member

    Joined:
    5 Nov 2008
    Messages:
    101
    Likes Received:
    22
    Reputations:
    5
    constanta, можешь попробовать прочитать его с помощью read(). Хотя не факт что это будет быстрее. Вообще посмотри на CPAN, там наверняка что-то есть по этому поводу!

    PS. IO::File, например.
     
    #892 demond, 11 Jan 2009
    Last edited: 11 Jan 2009
  13. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    open(TEST, $filename) || die "Can't open file\n";
    while (<TEST>)
    {
    @a[$i] = $_;
    chomp @a[$i];
    $i++;
    }
    close (TEST);

    чонить в этом роде

    или так (но скорее всего это уже для небольших файлов, потести в общем):

    open(TEST, $filename) || die "Can't open file\n";
    @Mass = <TEST>;
    close (TEST);
     
    #893 Pashkela, 11 Jan 2009
    Last edited: 11 Jan 2009
  14. scylla

    scylla New Member

    Joined:
    8 Jan 2009
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    kak zapistit exploiti na active perl?
     
  15. demond

    demond Member

    Joined:
    5 Nov 2008
    Messages:
    101
    Likes Received:
    22
    Reputations:
    5
    scylla, как и любой другой perl файл:
    (Если все стоит по дефолту)
    C:\Perl\bin\perl.exe exploit.pl
     
  16. Spyder

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

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    constanta
    Code:
    open  (SRC, "<file.txt");
    Read:
    while(<SRC>) {
    push @mas, $_;
    last if @mas > 1000;
    }
    ....
    тут действия с массивом
    ....
    goto Read
    
    если размер массива больше 1000, произваодится выход из цикла while
     
  17. j0ker13

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

    Joined:
    28 Jul 2008
    Messages:
    199
    Likes Received:
    16
    Reputations:
    5
    чет закалебался гуглить) скрипту передаются параметры. один из них урл. но ему не нравится знак "&" в урле) как сделать?)
     
  18. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    замени на %26
     
    1 person likes this.
  19. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    помогите написать генератор такого вида

    цифры;цифры/буквы(англ)

    -_-
     
  20. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    А в чем собственно проблема?
    Цифра
    int(rand(10000000))
    Буква
    @a = ('a'..'Z');
    $a[rand scalar @a]

    А дальше делай функцию под себя
     
    _________________________
Thread Status:
Not open for further replies.