LINUX.ORG.RU

Как использовать тип данных BIT из MySQL в Perl-скрипте?

 ,


0

1

Хотелось бы так:

CREATE TABLE config ( flags BIT(32) );
INSERT INTO config VALUES (b'10111001');

my $fl=$sth->fetchrow_hashref()->{'flags'};
if ($fl & 8) {
 doSomething();
}

В действительности «битовое» поле MySQL неясно как использовать на Perl даже если заморочиться с $int=unpack(«I», $fl) или чем-то подобным. В последнем случае, например, биты в $int почему-то оказываются в «перевёрнутом порядке» (т.е. обратном тому, в котором я их писал в MySQL).

В общем, как считаете, стоит ли с этим иметь дело или плюнуть и просто юзать обычный мускулевский INT?

Сама по себе концепция «набора флагов» мне весьма удобна, не хотелось бы от неё отказыаться.

P.S. Пока более-менее адекватным вариантом оказался этот:

use DBI;
$db=DBI->connect("dbi:mysql:database=docs_status","XXXX","YYYY");
$s=$db->prepare("select * from db_config where id=2"); $s->execute();
$fl=$s->fetchrow_hashref()->{"flags"};
$v=unpack( "N", $fl );
print "V=$v\n";
★★★★★

Последнее исправление: DRVTiny (всего исправлений: 2)

А чем, не секундочку, тип set не угодил?

thriller ★★
()

$int=unpack(«I», $fl) или чем-то подобным. В последнем случае, например, биты в $int почему-то оказываются в «перевёрнутом порядке»

$int=unpack(«I», reverse $fl)

Bad_ptr ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.