Skip to content
Опубликовано: 2014-06-21
Теги: perl

Различные хаки с govnokod.ru

Полезные хаки, найденные на govnokod.ru

Выборка из БД, с занесением в хеш по именам столбцов (pruf):

my $query = "SELECT ...";
my $sth = $dbh->prepare($query);
# below technic was described in DBI docs
my %row;
$sth->execute();
$sth->bind_columns( \( @row{ @{$sth->{'NAME_lc'}} }) );
while ($sth->fetch()) {
   if (defined $row{'my_field'}) {
       ...
   }
}

Убирание пробельных символов в начале и конце (pruf):

sub trim {
    @_ = @_ ? @_ : $_ if defined wantarray;
    s/^\s+|\s+$//gs for @_ ? @_ : $_;
    wantarray ? @_ : shift
}

trim($foo); # модификация $foo
$bar = trim($foo); # результат в $bar, $foo не меняется
trim(@foo); # модифицируем строки в массиве @foo
@bar = trim(@foo); # @foo не меняется, результат в @bar

Найти большее/меньшее число из двух (pruf):

my ($i, $j) = (42, 13);
my $max = [ $i => $j ]->[ $i <= $j ];
my $min = [ $i => $j ]->[ $i >= $j ];

Уникальные ключи из массива хешей (pruf):

my $data = [
  { one => 1, two => 2 },
  { two => 2, three => 3 },
  { three => 3, four => 4 }
];
my @datakeys = keys %{{ map { %{ $_ } } @{ $data } }};