Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [Perl] Новичкам: задаем вопросы (https://forum.antichat.xyz/showthread.php?t=40897)

_Great_ 26.05.2007 14:26

[Perl] Новичкам: задаем вопросы
 
В этой специальной теме новички могут задавать простые вопросы по языку Perl.

genom-- 26.05.2007 14:49

ээээээээээ типо я новичком буду сення

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

KSURi 26.05.2007 15:29

Код:

use locale;
use encoding 'cp1251';


Lancellot 26.05.2007 16:01

Привет!
начал изучать Perl но вот не могу найти нормального Perl-редактора,посоветуйте
какой лучше выбрать,я понимаю каждому свое, но всетаки интересно мнение
понимающих людей+)
желатеьно бесплатный
спс!

_Great_ 26.05.2007 16:07

UltraEdit-32 поддерживает подсветку синтаксиса перла подефолту, если нужен именно редактор, а не IDE. При желании его можно запрячь как IDE в некотором смысле, в менюшках сделать команду запуска интерпретатора.
Кстати, подсветка синтаксиса настраивается. Можно добавить любой язык.

_Great_ 26.05.2007 17:40

Кстати, тут постить стоит новичкам с вопросами непосредственно о языке. Обо всем остальном отдельные треды создаем типа "Кто знает хорошую IDE для Perl"

Dude03 26.05.2007 19:06

perl-mode в emacs, есть нормальный интерфейс с отладчиком(это сам не пробовал, но по идее через gud должно работать).
ЗЫ. Но это не для новичка

genom-- 26.05.2007 19:26

Цитата:

Сообщение от KSURi
Код:

use locale;
use encoding 'cp1251';



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

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

Piflit 27.05.2007 21:39

есть текстовой файл с мылами в строчку через запятую с пробелом. задача: поставить их в столбик (без запятой)
Код:

#!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 вопроса. Спасибо.

genom-- 27.05.2007 21:48

ну както так
open $in,"in.txt";
opne $out,">out.txt";
while($a=<$in>){
$a=~s/,/ /;
print $out $a;
}
close $in,$out;

вот как то так

Piflit 27.05.2007 22:10

все равно делает только один раз=\
что значит $a=<$in> ?
и зачем тут $a=~s/, / \n/; нужен знак ~ ?

Digimortal 27.05.2007 22:23

Цитата:

Сообщение от Piflit
все равно делает только один раз=\
что значит $a=<$in> ?
и зачем тут $a=~s/, / \n/; нужен знак ~ ?

почитайте учебник чтоле какой простенький или хоть статейку про perl-регекспы..
чтоб произвести глобальную замену :
$a=~/, /\n/g

Piflit 27.05.2007 22:28

Цитата:

Сообщение от Digimortal
почитайте учебник чтоле какой простенький или хоть статейку про perl-регекспы..
чтоб произвести глобальную замену :
$a=~/, /\n/g

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

KSURi 27.05.2007 22:29

ебанутая тема... такие темы "ленивят" людей!

Piflit 27.05.2007 22:56

еще один вопрос. как задать соответствие в регулярных выражениях. нужно заменить символ A на B, а С и D на E одним выражением . если вопрос слишком глупый, можете стереть его, после того, как будет дан ответ. ведь намного проще отписать пару строчек, чем сидеть и рыться в манах. спасибо

Piflit 28.05.2007 16:47

#!usr/bin/perl -w

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

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

Doger 09.06.2007 17:53

Помогите найти админку на _http://my-xchange.com

Piflit 09.06.2007 17:56

Цитата:

Сообщение от Doger
Помогите найти админку на _http://my-xchange.com

а при чем тут перл?

C!klodoL 10.06.2007 23:18

вот значит скрипт калькулятора...
Код:

$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";
<>;

как мы видим он определяет математическую операцию сравнивая введенный символ с сопоставленным операции, я же хочу чтобы было примерно так
Код:

print "a=\n";
$a = <>;

print "operation:\n";
$oper = <>;

print "b=\n";
$b = <>;

$c = $a [и тут как нибудь вставить переменную $oper] $b;

print "$c";


+toxa+ 11.06.2007 00:13

Цитата:

Сообщение от C!klodoL
как мы видим он определяет математическую операцию сравнивая введенный символ с сопоставленным операции, я же хочу чтобы было примерно так

Код:

...
$c = $a.$oper.$b;
print "$c";

?

_Great_ 11.06.2007 00:19

+toxa+, он хочет чтобы это выполнилось, а не просто напечаталось "$a оператор $b"

C!klodoL 11.06.2007 00:53

точно _Great_, чтобы выполнялось, не присвоить переменной C переменные a, oper, b. А чтобы было так $c = $a $oper $b где $oper это + или - или / или *

Digimortal 11.06.2007 07:53

C!klodoL,
Код:

print "a=\n";
$a = <>;
print "operation:\n";
$oper = <>;
print "b=\n";
$b = <>;
$c = $a.$oper.$b;
print eval "$c";


Fire3d 11.06.2007 18:24

Не давно начил изучать php вот что я попробовал сделать
Цитата:

<?
$a=5*2;
$b=11;
if($a<$b){
echo'$a меньнше $b';
else if ($a>$b){
echo'$a больше $b';
}
?>
Почему не пашет ?(

Spyder 11.06.2007 18:28

else if ($a>$b)

надо вроде
elsif ()

А вообще ты не в ту тему запостил)

GoreMaster 11.06.2007 18:29

PHP код:

<?
$a
=5*2;
$b=11;
if(
$a<$b){
echo
'$a меньнше $b';
}
elseif (
$a $b){
echo
'$a больше $b';
}
?>

вот работает.
Ты забыл } перед elseif

Fire3d 11.06.2007 18:31

Цитата:

Сообщение от Spyder
else if ($a>$b)

надо вроде
elsif ()

А вообще ты не в ту тему запостил)

ой извените плз :rolleyes:

sys32 12.06.2007 13:50

чем уникален перл от других языков программирования?

Piflit 12.06.2007 15:27

Цитата:

Сообщение от sys32
чем уникален перл от других языков программирования?

1) это язык скриптов (delphi или c++ не могут этим похвастаться :) )
2) скрипты на perl выполняются со стороны сервера (в отличии от js)
3) насколько я знаю, perl отличается от php тем, что в основном направлен на работу со строками (reg exp итд)
возможно, третий пункт не совсем правильно сформулировал.

ЗЫ грамотнее будет: ;)
в чем заключается уникальность перла среди/по отношению к...
или
чем отличается перл от...

blackybr 12.06.2007 16:22

на тему калькулятора %))))

Код:

#!perl
my $argc = @ARGV;
my $ans = eval($ARGV[0]);
print "\t$ans \n";
exit 0;


Digimortal 12.06.2007 23:46

blackybr,
ну, если уж на тему калькулятора, то вот:
Код:

#!perl
print eval $ARGV[0]

(непойму, зачем писать стока лишнего кода.. =))

Код:

D:\>perl calc.pl sin(3)+cos(1/2)
1.01870256995024

удобно получается.. )

Gho_st 15.06.2007 23:09

хм.. вот такой вопрос в чем преимущества Perl перед PHP

genom-- 16.06.2007 00:44

ээээээ ни в чем -- php больше заточен под веб -- а perl больше под локальное использование или юзанье с шелла =)

Gho_st 16.06.2007 01:43

ну а на практике если где у perl'a приемущества
я просто пытаюсь понять на сколько оно мне надо=)))

UnrealMAN 16.06.2007 12:42

У перла преимущество в скорости. Работа с файлами, регэкспы, все это перл делает быстрее. Но перл сложнее пхп, но я думаю это не существенно )) Еще перл программисты больше ценятся. :)

genom-- 17.06.2007 14:52

rкаждый олжен занть перл -- его должны учить в дет садах -- а самые красивые регекспы должны передаваться по наследству -- это чтобы ты понял какой это невье**нный язык

sys32 17.06.2007 15:49

Цитата:

его должны учить в дет садах
а ты его наверное вместо русского языка в школе учил %)

genom-- 17.06.2007 23:41

как раз русский я не учил угогогого

C!klodoL 24.06.2007 03:19

как сделать поддержку кириллицы в перл, чтобы он нормально выводил ее, накидайте пожалуйсто простенький пример

genom-- 24.06.2007 13:36

ну если в консоль я помнится делал так -- но это жесть $xz='пример:';$xz=~tr/а-я/\x80-\x9f/;print "$xz"; - и большими буквами
в общем бери таблицу символов и заменяй одно на другое по их коду
можно еще
use encoding 'cp1251';

просто в вин консоль идет в dos кодировке -- в никсах в utf --- а скрипт может быть написан или на cp1251 или на томже utf


Время: 01:50