Forum Webscript.Ru

Программирование => Perl => Тема начата: Skif от 10 Марта 2004, 11:50:28

Название: Поиск символа #
Отправлено: Skif от 10 Марта 2004, 11:50:28
Трямки всем,
Помогите с проблемой - не могу отыскать в файле символ #
Пытаюсь сделать следующий поиск
/\\A\\#/
и
/^\\#/
ничего не выходит - по файлу поиск похоже не идет - вместо того, что бы вывести нужную строку он выводит всякий бред, ну не совсем бред, а просто количество сих символов в файле:

skif@FreeBSD :/home/skif/1.pl
1
1
1
skif@FreeBSD :

полный код
#!/usr/bin/perl
use DBI;
open (passw, "/usr/local/etc/squid/passwd");

while (){
if ($_ =/^\\#/) {

print "$_ \\n";
}
}

close(passw);
Название: Поиск символа #
Отправлено: ondr от 10 Марта 2004, 12:09:38

#!/usr/bin/perl

open F, "
while( ) {

    print "$_\\n" if index( $_, \'#\' ) + 1;
}
Название: Поиск символа #
Отправлено: Skif от 10 Марта 2004, 12:13:03
Сейчас попробую, но объясните почему работает так:

Делаю
#!/usr/bin/perl
use DBI;
open (passw, "/usr/local/etc/squid/passwd");

while (){
$line=$_;
if ($line != /^\\#/) {

print "$_";
}
}

close(passw);

Получаю
skif@FreeBSD :/home/skif/1.pl
# Optima-Telecom Users
# krez:ycm0mxBKEKRqQ
# masyanya:OBVeNe17mPmEE
skif@FreeBSD :
Почему?
Название: Поиск символа #
Отправлено: Skif от 10 Марта 2004, 12:16:34
Угу, работает, спасибо!
Название: Поиск символа #
Отправлено: Chs от 10 Марта 2004, 12:35:24
Цитировать
if ($_ =/^\\#/) {

if ($_ =~ /^\\#/) {
Почувствуй разницу, Люк.:)
Название: Поиск символа #
Отправлено: Skif от 10 Марта 2004, 12:35:50
Да, вот только маленький глюк - мне эту связку надо использовать в  другом контексте:

bla-bla-bla

open (passwd_file, "
while( ) {

($pass_str,$pass_param)=split(":",$_);

if index( $_, \'#\' ) + 1 {
print "skipped \\n";
}
else {

############################################

#################################################
#                                               #
#       Database connect and select column      #
#                                               #
#################################################

my ($dbh,$sth,$count);
$dbh = DBI->connect
                ("DBI:mysql:host=freebsd;database=squid","$operator","$oper_pass")
                or die "cann\'t open db table $!";
а он в такой сцепке работать не желает.... :(((
Название: Поиск символа #
Отправлено: NeoNox от 10 Марта 2004, 12:38:51
Нам догадываться что он не делает?
Название: Поиск символа #
Отправлено: Skif от 10 Марта 2004, 12:42:31
Все, снимаю вопрос -
open (F, "
while( ) {

    if ($_,(index( $_, \'#\' ) + 1)){
    print $_;
    }
    }
close(F);


- Ступил... извиняюсь