Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Передача в sub хешированного массива


Автор: vax1700 8.8.2007, 10:48
Есть sub: 

Код
sub dbsql {
  my(%flags) = @_;

  # ...

  my $dbh = DBI->connect("DBI:mysql:host=...;database=...", user, pass, xxx);
  return $dbh;
}



я её вызываю как:

Код
my $dbh = &dbsql( { PrintError => 0, RaiseError => 0 } );


Мне интересно что писать вместо xxx ? Тут прописываются флаги для DBI, которые у меня передаются в массиве параметром %flags.

%flags
$flags
@flags

?

Подскажите плз.
непонятно ничего в этом перле smile

Автор: JAPH 8.8.2007, 11:12
Код
sub dbsql {    
  my $flags = $_[0];    # Вы же ссылку передаёте
  # ...    
  my $dbh = DBI->connect("DBI:mysql:host=...;database=...", user, pass, $flags);    
  return $dbh;    
}

Автор: vax1700 8.8.2007, 11:19
А в таком случае массив { PrintError => 0, RaiseError => 0 } передастся в DBI ?

Автор: amg 8.8.2007, 15:07
Цитата(vax1700 @ 8.8.2007,  11:19)
А в таком случае массив { PrintError => 0, RaiseError => 0 } передастся в DBI ?

Не путайте. { PrintError => 0, RaiseError => 0 } - это не массив, и даже не хэш. Это ссылка на хэш, т.е. скаляр.

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