Экспорт / Преобразование / Генерация python данных в Perl хэш - PullRequest
0 голосов
/ 07 апреля 2020

мой первый пост здесь :)

Я написал сценарий python, который выполняет некоторую работу, и в конце сценарий должен записать часть своего вывода в perlmodule.
Это perlmodule является частью Testing-Framework, написанного на Perl, но не поддающегося изменению (я не могу использовать строгий JSON для этого типа данных).
Мое текущее решение не является оптимальным (как я думаю) и Я хочу оптимизировать код. Я не так много о perl, я только начал его использовать.

Мое текущее решение состоит в том, чтобы создать «String» внутри python, который имеет правильный синтаксис Perl Ha sh, для добавления в файл perlmodule (Этот файл содержит много хэшей и функции), в основном я хочу добавить к этому файлу perlmodule из python.

# Example data generated from the py script
name_of_this_hash = "some_perl_hash_name"
name_of_folder = "some_testfolder"
name_of_file = "some_testfile"
description = "some_perl_description"

folder_and_name = name_of_folder + "/" + name_of_file

# Actual Export / Conversion to Perl Hash
string = "\n \
\n \
\n" + name_of_this_hash + " => \
\n{ \
\n    _desc => '" + description +  "', \
\n    params => { message => '', additional_val => 0 }, \
\n    consts => { enabled => 'net,mem', \
\n        reports => 'net,mem', \
\n    }, \
\n    files => { \
\n        storage_loc_1 => '" + folder_and_name + ".txt', \
\n    }, \
\n    debDesc => $debugDesc, mainvalues => $mainvalDesc, \
\n},"

# Dummy Print, string would be appended to perlmodule
print(string)

Код Python выдаст следующее Perl Ха sh:

some_perl_hash_name =>                                                                                                                                                                  
{                                                                                                                                                                                       
    _desc => 'some_perl_description',                                                                                                                                                   
    params => { message => '', additional_val => 0 },                                                                                                                                   
    consts => { enabled => 'net,mem',                                                                                                                                                   
        reports => 'net,mem',                                                                                                                                                           
    },                                                                                                                                                                                  
    files => {                                                                                                                                                                          
        storage_loc_1 => 'some_testfolder/some_testfile.txt',                                                                                                                       
    },                                                                                                                                                                                  
    debDesc => $debugDesc, mainvalues => $mainvalDesc,                                                                                                                                  
}, 

Этот га sh окружен следующим:

our $TESTS =
{
# Generated Hashes go here
}
# Some functions that define what the test does

Фреймворк в других местах клонирует этот «ИСПЫТАНИЯ» и выполняет функции на основе значений, которые были установлены (сгенерированы). Но дальнейшее, вероятно, не имеет значения.

Как видите, я пишу строки с синтаксисом Perl Ha sh и добавляю некоторые переменные через python с объединением строк. Я хотел бы иметь возможность иметь его "чище" и не использовать строки для составления этого Ha sh для Perl.
Вывод string будет тем, что я добавляю в модуль Perl.

Как я могу создать это Perl Ха sh непосредственно в python без использования создания строк с правильным синтаксисом и т. Д. c. быть вставленным в файл perlmodule?

Спасибо за несколько советов, Мануэль

РЕДАКТИРОВАТЬ: Изменено составление строк, как указано в первом комментарии:)
EDIT2: Теперь я понял, что то, что я ищу, называется " Ha sh "или" Ha sh Table "(вместо" Object ") в Perl (Unstructured Key-Value), сравнимое с" dict "в python - я улучшил свой вопрос, чтобы быть более очистить / указать c
EDIT3: добавлен пример вывода из сгенерированного python кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...