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

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

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

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

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    В этой специальной теме новички могут задавать простые вопросы по языку Perl.
     
    1 person likes this.
  2. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    ээээээээээ типо я новичком буду сення

    вообщем есть лажа в модуле tk -- getsavefile и getopenfile --- все пашет да выбираются файлы которые нужно открыть или сохранить ----- вот беда не дружит перл с великим и могучим и русские имена папок и файлов ну хоть убей не воспринимает --- можно это какнить подправить --- наверное можно гонять через encode потому что проблема с кодировкой однозначно -- но хотелось бы чтонить поизящнее -- что вы можете предложить
     
  3. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Code:
    use locale;
    use encoding 'cp1251';
    
     
  4. Lancellot

    Lancellot Member

    Joined:
    9 Aug 2006
    Messages:
    138
    Likes Received:
    23
    Reputations:
    7
    Привет!
    начал изучать Perl но вот не могу найти нормального Perl-редактора,посоветуйте
    какой лучше выбрать,я понимаю каждому свое, но всетаки интересно мнение
    понимающих людей+)
    желатеьно бесплатный
    спс!
     
  5. _Great_

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

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    UltraEdit-32 поддерживает подсветку синтаксиса перла подефолту, если нужен именно редактор, а не IDE. При желании его можно запрячь как IDE в некотором смысле, в менюшках сделать команду запуска интерпретатора.
    Кстати, подсветка синтаксиса настраивается. Можно добавить любой язык.
     
    1 person likes this.
  6. _Great_

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

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Кстати, тут постить стоит новичкам с вопросами непосредственно о языке. Обо всем остальном отдельные треды создаем типа "Кто знает хорошую IDE для Perl"
     
    1 person likes this.
  7. Dude03

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

    Joined:
    5 Oct 2006
    Messages:
    49
    Likes Received:
    9
    Reputations:
    7
    perl-mode в emacs, есть нормальный интерфейс с отладчиком(это сам не пробовал, но по идее через gud должно работать).
    ЗЫ. Но это не для новичка
     
  8. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288

    ну это я и так знаю -- но серавно непойдет -- конечно теперь он имя воспримит- т.е эрора уже не выдаст -- но вылазит другая проблема =)

    допустим мы сделали getopenfile --- запихнули имя в переменную -- пусть $name
    далее пытаемся открывать чтобы сделать все что нам нужно --- и опаньки вылетаем в эрором при открытии --- а все потому что perl то хочет видить не перекодированное имя файла и уж тем более не в cp1251 -- так что нам придется еще раз декодить этот текст из cp1251 в кодировку понятную перлу =) вот такие пироги ------ я вот и спрашивал вообщето можно какнить обойтись без этих принудительный кодирований несколько раз
     
  9. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    есть текстовой файл с мылами в строчку через запятую с пробелом. задача: поставить их в столбик (без запятой)
    Code:
    #!usr/bin/perl -w
    
    open(MYFILE, "e-mails.txt") || die "Can't open this file: $!";
    @contents=<MYFILE>;
    @new=grep s/, /\n/, @contents;
    close(MYFILE);
    open(NEWFILE, ">>new.txt") || die "Can't open this file: $!";
    print NEWFILE @new;
    close(NEWFILE);
    close(MYFILE);
    получается, что в файл new.txt копируется содержимое e-mails.txt, grep выполняется только один раз. а надо, чтобы столько, сколько всего ", ".
    как правильно?
    еще вопрос: как создать файл, а не использовать существующий?
    всего 2 вопроса. Спасибо.
     
  10. genom--

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

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    ну както так
    open $in,"in.txt";
    opne $out,">out.txt";
    while($a=<$in>){
    $a=~s/,/ /;
    print $out $a;
    }
    close $in,$out;

    вот как то так
     
  11. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    все равно делает только один раз=\
    что значит $a=<$in> ?
    и зачем тут $a=~s/, / \n/; нужен знак ~ ?
     
    #11 Piflit, 27 May 2007
    Last edited: 27 May 2007
  12. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    почитайте учебник чтоле какой простенький или хоть статейку про perl-регекспы..
    чтоб произвести глобальную замену :
    $a=~/, /\n/g
     
    1 person likes this.
  13. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    я читал. то была теория. а это практика) не всегда же все с первого раза получается))
    а вот про /g я забыл. мде. спасибо=)
     
  14. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    ебанутая тема... такие темы "ленивят" людей!
     
  15. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    еще один вопрос. как задать соответствие в регулярных выражениях. нужно заменить символ A на B, а С и D на E одним выражением . если вопрос слишком глупый, можете стереть его, после того, как будет дан ответ. ведь намного проще отписать пару строчек, чем сидеть и рыться в манах. спасибо
     
  16. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    #!usr/bin/perl -w

    open $in,"in.txt";
    open $out,">out.txt";
    $in=~ tr/, <>/\n/g;
    print $out $in;
    close $in,$out;

    символы ', ' (запятая с пробелом) должны меняться на первод строки, а '<' и '>' исчезать. спасибо за оказанную помощь :)
    ЗЫ странно, у меня теги не пашут...
     
  17. Doger

    Doger New Member

    Joined:
    8 May 2007
    Messages:
    5
    Likes Received:
    4
    Reputations:
    0
    Помогите найти админку на _http://my-xchange.com
     
  18. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    а при чем тут перл?
     
  19. C!klodoL

    C!klodoL Elder - Старейшина

    Joined:
    5 Jun 2007
    Messages:
    302
    Likes Received:
    208
    Reputations:
    4
    вот значит скрипт калькулятора...
    Code:
    $x = 0;
    $y = 0;
    $oper = "";
    print "a=\n";
    
    $x = <>;
    chomp ($x);
    print "operation +, -, *, /:\n";
    
    $oper = <>;
    chomp ($oper);
    print "b=\n";
    
    $y = <>;
    chomp ($y);
    if ($oper eq "+") {$result = $x + $y;}
    elsif ($oper eq "-") {$result = $x - $y;}
    elsif ($oper eq "*") {$result = $x * $y;}
    elsif ($oper eq "/") {$result = $x / $y;}
    print "$result";
    <>;
    как мы видим он определяет математическую операцию сравнивая введенный символ с сопоставленным операции, я же хочу чтобы было примерно так
    Code:
    print "a=\n";
    $a = <>;
    
    print "operation:\n";
    $oper = <>;
    
    print "b=\n";
    $b = <>;
    
    $c = $a [и тут как нибудь вставить переменную $oper] $b;
    
    print "$c";
     
  20. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,029
    Reputations:
    1,228
    Code:
    ...
    $c = $a.$oper.$b;
    print "$c";
    ?
     
    _________________________
    #20 +toxa+, 11 Jun 2007
    Last edited by a moderator: 11 Jun 2007
Thread Status:
Not open for further replies.