ээээээээээ типо я новичком буду сення вообщем есть лажа в модуле tk -- getsavefile и getopenfile --- все пашет да выбираются файлы которые нужно открыть или сохранить ----- вот беда не дружит перл с великим и могучим и русские имена папок и файлов ну хоть убей не воспринимает --- можно это какнить подправить --- наверное можно гонять через encode потому что проблема с кодировкой однозначно -- но хотелось бы чтонить поизящнее -- что вы можете предложить
Привет! начал изучать Perl но вот не могу найти нормального Perl-редактора,посоветуйте какой лучше выбрать,я понимаю каждому свое, но всетаки интересно мнение понимающих людей+) желатеьно бесплатный спс!
UltraEdit-32 поддерживает подсветку синтаксиса перла подефолту, если нужен именно редактор, а не IDE. При желании его можно запрячь как IDE в некотором смысле, в менюшках сделать команду запуска интерпретатора. Кстати, подсветка синтаксиса настраивается. Можно добавить любой язык.
Кстати, тут постить стоит новичкам с вопросами непосредственно о языке. Обо всем остальном отдельные треды создаем типа "Кто знает хорошую IDE для Perl"
perl-mode в emacs, есть нормальный интерфейс с отладчиком(это сам не пробовал, но по идее через gud должно работать). ЗЫ. Но это не для новичка
ну это я и так знаю -- но серавно непойдет -- конечно теперь он имя воспримит- т.е эрора уже не выдаст -- но вылазит другая проблема =) допустим мы сделали getopenfile --- запихнули имя в переменную -- пусть $name далее пытаемся открывать чтобы сделать все что нам нужно --- и опаньки вылетаем в эрором при открытии --- а все потому что perl то хочет видить не перекодированное имя файла и уж тем более не в cp1251 -- так что нам придется еще раз декодить этот текст из cp1251 в кодировку понятную перлу =) вот такие пироги ------ я вот и спрашивал вообщето можно какнить обойтись без этих принудительный кодирований несколько раз
есть текстовой файл с мылами в строчку через запятую с пробелом. задача: поставить их в столбик (без запятой) 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 вопроса. Спасибо.
ну както так open $in,"in.txt"; opne $out,">out.txt"; while($a=<$in>){ $a=~s/,/ /; print $out $a; } close $in,$out; вот как то так
почитайте учебник чтоле какой простенький или хоть статейку про perl-регекспы.. чтоб произвести глобальную замену : $a=~/, /\n/g
я читал. то была теория. а это практика) не всегда же все с первого раза получается)) а вот про /g я забыл. мде. спасибо=)
еще один вопрос. как задать соответствие в регулярных выражениях. нужно заменить символ A на B, а С и D на E одним выражением . если вопрос слишком глупый, можете стереть его, после того, как будет дан ответ. ведь намного проще отписать пару строчек, чем сидеть и рыться в манах. спасибо
#!usr/bin/perl -w open $in,"in.txt"; open $out,">out.txt"; $in=~ tr/, <>/\n/g; print $out $in; close $in,$out; символы ', ' (запятая с пробелом) должны меняться на первод строки, а '<' и '>' исчезать. спасибо за оказанную помощь ЗЫ странно, у меня теги не пашут...
вот значит скрипт калькулятора... 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";