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