Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Sergey Prozhogin                     2:5030/324.324 24 Sep 2001  21:33:38
 To : All
 Subject : хитрость
 -------------------------------------------------------------------------------- 
 
 
 
 хочется сделать модуль со след. хитростью.
 
 парсится файл. первые три символа обозначают тип поля в файле
 и вот по этим трём символам надо вызвать определенную процедуру из библиотеки
 сейчас есть неработающее решение (пишу по-памяти может что и упустил)
 
 package parser;
 
 use strict;
 use Data::Dumper;
 
 my $p_routines = {
     '000'   => \&parser::parse_000,
     '001'   => \&parser::parse_001,
     ...
 };
 
 sub getParsedInfo( $;$ )
 {
     my ($section, $param) = @_;
 
     my $info;
 
     return undef if( !defined($section) || $section eq '');
 
 =cut
 
 дальше получается черти-что и сбоку бантик вместо указателя на процедуру
 
 print Dumper( $rountine ); дает $VAR1 = 'sub{"DUMMY"}'
 
 делал кто нить такое?
 или какие-нить идеи?
 
 строго говоря всё это можно оформить как подключаемый модуль (не пекежд) и юзать
 через require, а не use, но хочеться понять!
 
 спасибо
 
 =pod
     if( exists( $p_routines->{$section} )){
         my $routine = $p_routines->{$section};
         $info = &$section->( $param );
     }
     else{
         print "there is no handler for $section\n";
     }
 
     return $info;
 }
 
 sub parse_000( $ )
 {
     my $param = shift;
 
     my $result;
 
     $result->{name} = substr( $param, 5, 10 );
 
     ....
 
     return $result;
 }
 
 sub parse_001( $ )
 {
     my $param = shift;
 
     ....
 
 }
 
 и вызывающий модуль
 
 #!/usr/bin/perl -w
 
 use strict;
 use parser;
 
 ....
 
 my @lines = <FILE_HANDLER>;
 
 foreach my $line (@lines){
     my $section = substr( $line, 0, 3 );
 
     my $info = parser::getParserInfo( $section, $line );
     next unless( defined( $info ));
 
     ...
 }
 
 -= воспоминания - pазновидность некpофилии
     \\/br \\cc pro
 --- kulatsky podpevala 3.00b2
  * Origin: Renton WA 98058 (2:5030/324.324)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 хитрость   Sergey Prozhogin   24 Sep 2001 21:33:38 
 Re: хитрость   Pavel Ammosov   26 Sep 2001 18:17:57 
Архивное /ru.perl/45563bafaaaf.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional