LINUX.ORG.RU

Библиотека трансляции Perl Storable <-> C struct

 ,


0

3

https://github.com/codemeow/camelion

Умеет:

  • Читать\писать perl storable
  • Читать\писать perl nfreezed binary
  • Самостоятельно создавать\редактировать структуры для трансляции

Дополнительно позволяет использовать себя как считыватель настроект для С-программы - кладем настройки в perl-storable и в файл и считываем либой. Поддерживает хэши любой вложенности, массивы, строки, инты.

★★

Ответ на: комментарий от PPP328

Не православно, принято выкладывать свои наработки на cpan.

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

Чем перестал устраивать гитхаб? Вчера еще было ок, сегодня все, мода поменялась? Это же не перловый код, але!

anonymous ()
# perl -MStorable -le 'store { ''A'' => 12, ''B'' => [ 0..20 ], ''C'' => { ''aa'' =>  { ''bb'' => { ''cc'' => 0 } } } }, "test.stor"'
# LD_LIBRARY_PATH=. ./test test.stor
error 49: No storable signature found
# file test.stor
test.stor: perl Storable (v0.7) data (major 2) (minor 10)
arto ★★ ()
Ответ на: комментарий от arto

Либо подавайте на вход функций

{
   a => b,
   <..>
}

Либо nfreezed данные

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

Первое предложение не понял.

# perl -MStorable=nfreeze -le 'print nfreeze { ''A'' => 12, ''B'' => [ 0..20 ], ''C'' => { ''aa'' =>  { ''bb'' => { ''cc'' => 0 } } } }' > test2.stor
# LD_LIBRARY_PATH=. ./test test2.stor
error 49: No storable signature found
# file test2.stor
test2.stor: data
#
arto ★★ ()
Ответ на: комментарий от arto

Не ту функцию используете. No Storable Signature только в CML_StorableFromString, а она предназначена для

char stor[] = {" { a => b }  "}

Для nfreezed данные дергайте CML_ThawFile.

P.S. Объявление массивов через [1..2] пока не работает, работаю над этим

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

При CML_ThawFile выбрасывает ошибку «error 50: Bad entity name».

# perl -MData::Dumper -MStorable=thaw -0777 -lne 'print Dumper thaw $_' test2.stor
$VAR1 = {
          'A' => 12,
          'C' => {
                   'aa' => {
                             'bb' => {
                                       'cc' => 0
                                     }
                           }
                 },
          'B' => [
                   0,
                   1,
                   2,
                   3,
                   4,
                   5,
                   6,
                   7,
                   8,
                   9,
                   10,
                   11,
                   12,
                   13,
                   14,
                   15,
                   16,
                   17,
                   18,
                   19,
                   20
                 ]
        };
arto ★★ ()

Советую залить на cpan и рассказать об ней в той же рассылке moscow.pm.org ну или gabor szabo чиркануть он его в perl weekly бросит

pinachet ★★★★★ ()
Ответ на: комментарий от arto

Я ж уже писал что [2..15] пока не поддерживается. Если писали

{
   arr => [2..15],
}

попробуйте написать по-элементно. Если все равно не работает - покажите полностью код.

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

Это ж си, а не перл. Или не имеет значения?

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

Большое спасибо за найденную ошибку. Пофиксил последним коммитом.

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

Перл конвертирует [2..15] в [ 2,3,4,5,6,7,8,9,10,11,12,13,14,15 ], это не литерал.

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

Теперь работает:

# ./test =( perl -MStorable=nfreeze -e 'print nfreeze { ''A'' => 12, ''B'' => [ 0..20 ], ''C'' => { ''aa'' =>  { ''bb'' => { ''cc'' => 0 } } } }' ) 
{
    C => {
        aa => {
            bb => {
                cc => 0,
            },
        },
    },
    B => [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20,
    ],
    A => 12,
},

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

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

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