Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Хэши....


Автор: djkostya 31.5.2006, 15:13
Код

#!/usr/bin/perl 
package modules::SMTP; 
our $VERSION = 1.00; 
use strict; 
use Mail::Sender; 


sub new { 
  my $proto = shift; 
  my $class = ref($proto) || $proto; 
  my $self  = {}; 
  $self->{TEMPLATE} = undef; 
  $self->{EMAIL} = undef; 
  bless($self, $class); 
  return $self; 



sub template { #Шаблон для отправки письма 
    my $self = shift; 
    if (@_) { $self->{TEMPLATE} = shift } 
    return $self->{TEMPLATE}; 


sub email { #Куда отправляем письмо 
    my $self = shift; 
    if (@_) { $self->{EMAIL} = shift } 
    return $self->{EMAIL}; 



1;



Простой модуль....
Так вот у меня проблема как из скрипта передать в модуль

modules::SMTP->send('mail.tmpl', '[email protected]' {res1=>"456", res2=>"7865", res_ok=>"ffff"} )


Ну то есть хэш структуру...
Ребята не поможете....

Добавлено @ 15:15 
П.С то есть мне надо как-то в метод send запихать данные хэша 

Автор: korob2001 1.6.2006, 02:25
Ну так а в чём проблема? Ты же сам привёл пример того, как подпрограмме передать анонимный хеш. После в теле подпрограммы разыменуй его и работай как с обычным хешем, либо работай со ссылкой на хеш с использованием оператора "стрелка" ->.
Вот простой пример:
Код
#!/usr/bin/perl -w
use strict;

sub send_mail {
    my($host,$mail,$data) = @_;
    print "Host: $host\n";
    print "Mail: $mail\n\n";
    print "Anonim hash:\n";
    foreach (keys %{$data}) {
             print "\t$_ => " . $data->{$_} . "\n";
    }
}

send_mail('smtp.telenet.be','[email protected]', {res1=>"456", res2=>"7865", res_ok=>"ffff"});

Здесь подпрограмма принимает 3 параметра, где:
1. строка (smtp сервер).
2. строка (E-mail)
3. Анонимный хеш, с какими-то параметрами.
В теле подпрограммы, выводитятся все аргументы вместе с анонимным хешем. Можешь так же в основном коде создать обычный хеш и передавать ссылку на него, что по сути одно и то же.

ЗЫ: Если я чего-то недопонял, поясни задачу подробнее.  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)