Perl - 解析文件中的特定数据
Perl - Parsing specific data from a file
我正在尝试从 [=21] 中的此代码块中解析 DB_HOST、DB_NAME、DB_USER 和 DB_PASSWORD 的值=] 文件:
define('DB_NAME', 'foobar_db');
define('DB_USER', 'foobar_user');
define('DB_PASSWORD', 'foobar_password');
define('DB_HOST', 'localhost');
我目前的方法(据我所知)是将文件存储在一个变量中,并使用正则表达式一次性解析每个定义的值。我可以做到这一点,一切都很好,花花公子。但是,我只知道基本的正则表达式语法,不知道如何构建适用于此的语法。
在此先感谢您的帮助~
这应该可以帮助您找到解决方案。它只是从每一行中提取所有 word 个字符(字母数字和下划线)的序列,并使用第二个和第三个字段作为变量名称和值。
如果值比简单的带引号的字符串更复杂,或者如果值可以包含单词字符以外的其他内容(例如空格),这将不起作用。
use strict;
use warnings;
while (<DATA>) {
my @fields = /\w+/g;
my ($var, $val) = @fields[1,2];
printf "%-12s = %s\n", $var, $val;
}
__DATA__
define('DB_NAME', 'foobar_db');
define('DB_USER', 'foobar_user');
define('DB_PASSWORD', 'foobar_password');
define('DB_HOST', 'localhost');
输出
DB_NAME = foobar_db
DB_USER = foobar_user
DB_PASSWORD = foobar_password
DB_HOST = localhost
我正在尝试从 [=21] 中的此代码块中解析 DB_HOST、DB_NAME、DB_USER 和 DB_PASSWORD 的值=] 文件:
define('DB_NAME', 'foobar_db');
define('DB_USER', 'foobar_user');
define('DB_PASSWORD', 'foobar_password');
define('DB_HOST', 'localhost');
我目前的方法(据我所知)是将文件存储在一个变量中,并使用正则表达式一次性解析每个定义的值。我可以做到这一点,一切都很好,花花公子。但是,我只知道基本的正则表达式语法,不知道如何构建适用于此的语法。
在此先感谢您的帮助~
这应该可以帮助您找到解决方案。它只是从每一行中提取所有 word 个字符(字母数字和下划线)的序列,并使用第二个和第三个字段作为变量名称和值。
如果值比简单的带引号的字符串更复杂,或者如果值可以包含单词字符以外的其他内容(例如空格),这将不起作用。
use strict;
use warnings;
while (<DATA>) {
my @fields = /\w+/g;
my ($var, $val) = @fields[1,2];
printf "%-12s = %s\n", $var, $val;
}
__DATA__
define('DB_NAME', 'foobar_db');
define('DB_USER', 'foobar_user');
define('DB_PASSWORD', 'foobar_password');
define('DB_HOST', 'localhost');
输出
DB_NAME = foobar_db
DB_USER = foobar_user
DB_PASSWORD = foobar_password
DB_HOST = localhost