在perl脚本中的字符串中的几个位置添加特殊字符

时间:2013-07-22 21:21:18

标签: perl perl-module

我从设备上读取了一些原始数据。此数据也包含IP地址,但格式不同。如您所知,IP地址通常以a.b.c.d格式写入。但是我有从设备给出的格式abcd的数据。我需要以a.b.c.d格式获取它。如何在perl脚本中执行此操作?

此致

3 个答案:

答案 0 :(得分:0)

有很多方法。这会插入带子串的点。

map {substr($ string,$ _,0)='。' (6,4,2);

也许你更喜欢正则表达式。

$ string = ~s / [0-9a-f] {2} \ K(?!\ Z)/./ g;

答案 1 :(得分:0)

首先,让我们将十六进制字符串拆分为两个字符的子串:

... split /..\K/, "c0a80001";

我们将每个片段视为十六进制字符串,并使用hex内置函数获取数值:

... map hex, ...

然后,我们将所有数字加入一段时间:

join '.', ...

组合:

my $ip = join '.', map hex, split /..\K/, "c0a80001";
print "$ip\n";

输出:192.168.0.1。这是IPv4地址的通常文本表示。

答案 2 :(得分:-1)

这实际上取决于采用的方法,但大多数情况下你需要使用反斜杠转义来自IP地址的点

a\.b\.c\.d

一些源代码很好btw ...