Хорошо, поэтому я использую perl для чтения в файле, который содержит некоторые общие данные конфигурации. Эти данные объединены в заголовки, основанные на том, что они означают. Ниже приведен пример:
[vars]
# This is how we define a variable!
$var = 10;
$str = "Hello thar!";
# This section contains flags which can be used to modify module behavior
# All modules read this file and if they understand any of the flags, use them
[flags]
Verbose = true; # Notice the errant whitespace!
[path]
WinPath = default; # Keyword which loads the standard PATH as defined by the operating system. Append with additonal values.
LinuxPath = default;
Цель. Используя первую строку в качестве примера "$ var = 10;", я хотел бы использовать функцию split в perl для создания массива, содержащего символы "$ var" и "10" в качестве элементов. Использование другой строки в качестве примера:
Verbose = true;
# Should become [Verbose, true] aka no whitespace is present
Это необходимо, потому что я буду выводить эти значения в новый файл (который будет читать другой фрагмент кода на С++) для создания объектов словаря. Просто, чтобы дать вам немного вкуса от того, как он может выглядеть (просто придумывая, как я иду):
define new dictionary name: [flags] # Start defining keys => values new key name: Verbose new value val: 10 # End dictionary
О, и вот код, который у меня есть в настоящее время, с тем, что он делает (неправильно):
sub makeref($)
{
my @line = (split (/=/)); # Produces ["Verbose", " true"];
}
Чтобы ответить на один вопрос, почему я не использую Config:: Simple, я изначально не знал, как будет выглядеть мой файл конфигурации, только то, что я хотел сделать. Составляя это, когда я шел - по крайней мере, что мне показалось разумным - и используя perl для анализа файла.
Проблема в том, что у меня есть код на С++, который будет загружать информацию в файл конфигурации, но так как синтаксический анализ на C или С++:( Я решил использовать perl. Это также хорошее учебное упражнение для меня, так как я новичок в язык. Так что, этот код perl действительно не отличается от моего приложения, он просто упрощает чтение кода на С++. И это более читаемо (как файл конфигурации, так и сгенерированный файл) Спасибо за отзывы, это действительно помогло.