我有一个日志文件和一个用户输入的表名。现在,用户输入的表名将在日志文件中搜索,如果找到与该表对应的任何数据,则应将其映射到最终用户可以理解的非技术语言。
任何人都可以建议如何进行此映射,然后打印等效的映射字符串作为输出。
例如,要映射的数据是:
!!!!!! Diff004: record 0 differs in content for fields 'pid'
!!!!!! Diff005: record 1 differs in content for fields 'pid'
!!!!!! Diff006: record 2 differs in content for fields 'pid'
这些数据要映射到更多的非技术性语句中,然后将那些映射的状态显示给用户而不是这些。
根据@TLP要求提供真实数据
Checking table CTusr000...
!!!!!! Diff004: record 0 differs in content for fields 'pid'
!!!!!!
uexpday,uexphr,uexpmin,uexpsec
db1 [Rec 000000] 30 00 00 00 00 00 00 00,00 00,53 55 50 45 52 55 53 45 52 00 00,77
我真的很难弄清楚映射到非技术语言意味着什么,因为这不是技术语言,但它是。英语。
因此,请查看以下示例,该示例向您展示如何从通用$line
获取record no
和field name
。
#!/usr/bin/perl -w
use strict;
use warnings;
my $line = "!!!!!! Diff004: record 0 differs in content for fields 'pid'";
$line =~ /^!{6}s+.*records+(d+)s+differs.*fieldss+'(w+)'$/;
print "record no: $1n";
print "field name: $2n";
以您打算的更好的非技术方式组合这些信息。
该示例仅适用于单个$line
。我把从文件任务和迭代处理任务中读取行留给你。