LINUX.ORG.RU

perl pack() в о FreeBSD ведет себя не так как в Linux :(


0

0

В моей программе мне надо несколько строк сложить в одну переменную, каждая строка должна заканчиваться как в С - 0х00 байтом.

Для этого я использую функцию perl'a pack(). Вот таким образом: $var=pack('Z*Z*',"test1","test2");

В линуксе все работает нормально и я в переменной получаю:

0000: 74 65 73 74 31 00 74 65 73 74 32 00


во фряхе - нули не проставляются, а получается лишь:

0000: 74 65 73 74 31 74 65 73 74 32


почему так?
Какие есть альтернативные методы "аскизации" строки? что вы посоветуете, аксакалы? спасибо :)

anonymous

Может быть версии перла там разные? Предлагаю такой вариант:

$t1 = 'test1';
$t2 = 'test2';
print OUT "$t1\x00$t2\x00";

anonymous
()
Ответ на: комментарий от anonymous

да я пока так и сделал, но все же интересно насчет pack() - думал может кто то сталкивался...

anonymous
()

Да, блин... Действительно... Тоько что проверил... %-\

Ну тады прости, только 

$tmpl='Z'.(length("test1") + 1).'Z'.(length("test2") + 1); 
$var=pack($tmpl,"test1","test2"); 

спасет тебя... Если ты и сам знал что тебя спасет, а хотел у гуру поинтересоваться 
чисто теоретическими аспектами проблемы, то извини типа... %-)

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