OK, vì vậy tôi đang sử dụng perl để đọc trong một tệp có chứa một số dữ liệu cấu hình chung. Dữ liệu này được sắp xếp thành tiêu đề dựa trên ý nghĩa của chúng. Một ví dụ sau:Sử dụng perl để phân tách một dòng có thể chứa khoảng trắng
[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;
Mục tiêu: Sử dụng dòng đầu tiên là một ví dụ "$ var = 10;", tôi muốn sử dụng chức năng chia trong perl để tạo ra một mảng chứa các ký tự "$ var "và" 10 "làm phần tử. Sử dụng dòng khác như một ví dụ:
Verbose = true;
# Should become [Verbose, true] aka no whitespace is present
này là cần thiết bởi vì tôi sẽ được xuất ra những giá trị này vào một tập tin mới (mà một mảnh khác nhau của C++ mã sẽ đọc) để nhanh chóng đối tượng từ điển. Chỉ cần cung cấp cho bạn một chút hương vị của những gì nó có thể trông giống như (chỉ cần làm cho nó lên như tôi đi cùng):
define new dictionary name: [flags] # Start defining keys => values new key name: Verbose new value val: 10 # End dictionary
Oh, và đây là mã Tôi hiện có cùng với những gì nó đang làm (không chính xác) :
sub makeref($)
{
my @line = (split (/=/)); # Produces ["Verbose", " true"];
}
Để trả lời một câu hỏi, tại sao tôi không sử dụng Config :: Đơn giản, ban đầu tôi không biết tệp cấu hình của mình trông như thế nào, chỉ những gì tôi muốn. Làm cho nó lên như tôi đã đi cùng - ít nhất là những gì có vẻ hợp lý với tôi - và sử dụng perl để phân tích các tập tin.
Vấn đề là tôi có một số mã C++ sẽ tải thông tin trong tệp cấu hình, nhưng vì phân tích trong C hoặc C++ là :(Tôi quyết định sử dụng perl. Đây cũng là bài tập tốt cho tôi vì tôi mới Vì vậy, đó là điều, mã perl này không thực sự ngoài ứng dụng của tôi, nó chỉ làm cho nó dễ dàng hơn cho mã C++ để đọc thông tin. Và, nó dễ đọc hơn (cả tệp cấu hình và tệp được tạo ra). Cảm ơn các ý kiến phản hồi, nó thực sự giúp đỡ.
Không sử dụng nguyên mẫu trừ khi chúng là cần thiết. Thậm chí sau đó, suy nghĩ ba lần. http://perldoc.perl.org/perlsub.html#Prototypes * Tất cả điều này rất mạnh mẽ, tất nhiên, và chỉ nên được sử dụng ở mức vừa phải để làm cho thế giới trở thành một nơi tốt hơn. * –
Vui lòng xem câu trả lời của FM. Bạn thực sự không nên viết trình phân tích cú pháp tệp của riêng mình để thực hiện một công việc CPAN phổ biến và tiêu chuẩn như vậy, và tập trung vào logic ứng dụng của bạn. – Ether