The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"perl и кавычки "
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"perl и кавычки "  +/
Сообщение от L0n3R4ng3r (ok) on 13-Фев-10, 23:07 
Доброго времени суток.

Столкнулся с такой проблемой, пытаюсь выкусить кусок из строки и вставить ее в переменую. Но перл вставляет лишний апостроф в переменую который не видный при ввыводе, но при операциях типа eq с аналогичным значением выдает false :(

вот вывод дебага:


monitoring::GetLogStringHash1(monitoring.pm:277):
277:            if ( $temp_hash->{type} eq "bin" or $temp_hash->{type} eq "char" ) {
  DB<1>
monitoring::GetLogStringHash1(monitoring.pm:278):
278:                my ($offset,$len);
  DB<1>
monitoring::GetLogStringHash1(monitoring.pm:279):
279:                if ($temp_hash->{value} =~ /(\d+)-(\d+)/){
  DB<1>
monitoring::GetLogStringHash1(monitoring.pm:280):
280:                    $offset = $1;
  DB<1>
monitoring::GetLogStringHash1(monitoring.pm:281):
281:                    $len = $2-$offset;
  DB<1>
monitoring::GetLogStringHash1(monitoring.pm:283):
283:                $result{$hashes} = substr($string,$offset,$len);
  DB<1>
monitoring::GetLogStringHash1(monitoring.pm:291):
291:        $deb = mon_debug::PrintPerfTime("GetLogStringHash",'end',$deb);
  DB<1> y temp_hash
%result = (
   'error_type' => 'I'
   'name' => 'JafCache                      '
)
  DB<2> y string
$string = 'JafCache                      :0705 232956.951:I:<CACHE>     :SETTER: Cache mbean max cached entries [5]'


'JafCache

аналогичные переменые выкусывает нормально, екранируя их '':
DB<1> y result string
$string = 'JafCache                      :0705 232956.951:I:<CACHE>     :SETTER: Cache mbean max cached entries [5]'
%result = (
   'error_type' => 'I'
)

перепробывал уже все и пытался удалять все ' в переменой и выкусывать не с нолевого а с первого символа. Как с этим бороться?

Заранее спасибо.

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "perl и кавычки "  +/
Сообщение от ACCA (ok) on 15-Фев-10, 07:35 
[поток сознания поскипан]

Сделай короткий пример - данные, которые ты парсишь, минимальный кусок кода, который делает не то, что нужно и на словах скажи что ты хочешь получить. Например:

while (<DATA>) {
    chomp;
    my @a = split /\s*:\s*/;
    print join(',', @a);
}

__DATA__

JafCache :0705 232956.951:I:<CACHE>     :SETTER: Cache mbean max cached entries [5]

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "perl и кавычки "  +/
Сообщение от L0n3R4ng3r (ok) on 15-Фев-10, 13:55 
>[оверквотинг удален]
>
>while (<DATA>) {
>    chomp;
>    my @a = split /\s*:\s*/;
>    print join(',', @a);
>}
>
>__DATA__
>
>JafCache :0705 232956.951:I:<CACHE>     :SETTER: Cache mbean max cached entries [5]

вот код. посдний pring для того чтобы прогама сразу не закрылась в дебаге
#!/usr/local/bin/perl

my $str="JafCache                      :0705 232956.951:I:<CACHE>     :SETTER: Cache mbean max cached entries [5]";

my $offset=0;
my $len=30;
my $value=substr($str,$offset,$len);
print "$value\n";
print "false" if ($value ne 'JafCache');
print "df";


вот дебаг:
main::(qwe:3):  my $str="JafCache                      :0705 232956.951:I:<CACHE>     :SETTER: Cache mbean max cached entries [5]";
  DB<1> n
main::(qwe:5):  my $offset=0;
  DB<1>
main::(qwe:6):  my $len=30;
  DB<1>
main::(qwe:7):  my $value=substr($str,$offset,$len);
  DB<1>
вот принт на аутпуте у нас JafCache:
main::(qwe:8):  print "$value\n";
  DB<1>
JafCache
main::(qwe:9):  print "false" if ($value ne 'JafCache');
смотрим что у нас внутри переменой:
  DB<1> y value
$value = 'JafCache                      '
вот такое
  DB<2>
main::(qwe:10): print "df";
  DB<2> false

собственно пока писал и нашел ошибку которую не мог долго заметить - в переменое еще куча пробелов в конце :)
$value =~ s/\s//g;
все

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру