如何将一些字符串映射到另一个字符串并在 Perl 中打印输出



我有一个日志文件和一个用户输入的表名。现在,用户输入的表名将在日志文件中搜索,如果找到与该表对应的任何数据,则应将其映射到最终用户可以理解的非技术语言。

任何人都可以建议如何进行此映射,然后打印等效的映射字符串作为输出。

例如,要映射的数据是:

!!!!!! 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 nofield 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。我把从文件任务和迭代处理任务中读取行留给你。

相关内容

最新更新