有这样一段文本: pin (CLKA) {\n timing {\n related_pin : CLKB;\n timing_type :hold;\n when :”!RET”;\n }\n timing {\n related_pin : CLKB;\n timing_type :hold;\n when :”!RET”;\n }\n }\n pin (CLKB) {\n timing {\n related_pin : CLKB;\n timing_type :hold;\n when :”!RET”;\n }\n }\n 用perl 动态哈希存储pin紧跟括号里的字符,以及不同timing里的related pin 及timing_type的信息
时间: 2023-06-30 09:06:17 浏览: 111
可以使用正则表达式来匹配这段文本,然后使用动态哈希进行存储。
以下是一个示例代码:
```perl
#!/usr/bin/perl
use strict;
use warnings;
my $text = 'pin (CLKA) {
timing {
related_pin : CLKB;
timing_type : hold;
when : "!RET";
}
timing {
related_pin : CLKB;
timing_type : hold;
when : "!RET";
}
}
pin (CLKB) {
timing {
related_pin : CLKB;
timing_type : hold;
when : "!RET";
}
}';
my %hash;
while ($text =~ /pin \((\w+)\) \{.*?timing \{.*?related_pin : (\w+).*?timing_type : (\w+).*?\}.*?\}/gs) {
my $pin = $1;
my $related_pin = $2;
my $timing_type = $3;
$hash{$pin}{'related_pin'} = $related_pin;
$hash{$pin}{'timing_type'} = $timing_type;
}
print "Hash:\n";
print "$_ : $hash{$_}{'related_pin'} $hash{$_}{'timing_type'}\n" for keys %hash;
```
输出结果如下:
```
Hash:
CLKA : CLKB hold
CLKB : CLKB hold
```
这个代码使用正则表达式匹配 pin 和 timing 的信息,然后将它们存储在动态哈希 `%hash` 中。其中 `$hash{$pin}{'related_pin'}` 存储了 `related_pin` 的信息,而 `$hash{$pin}{'timing_type'}` 存储了 `timing_type` 的信息。最后,将哈希中的内容打印出来。
阅读全文