再次请教关于ruby=>perl DQP大侠请进

再次请教关于ruby=>perl DQP大侠请进

ruby代码:

when /google\.com/
        line.gsub!(/(\\x[0-9a-fA-F]{2})+/) do
          [$1.delete('\\\\x')].pack('H*')
        end
        _print NKF.nkf('-Z1e', line)
——————————————————————————————

my ($a) = ($line =~ m/\\x([0-9a-fA-F]{2})/g)[-1];
$line = pack('H*', $a);
找出在line中满足\\x([0-9a-fA-F]{2})的最后一个子串. 然后对它作pack. 再将这个pack的返回值赋给line。  这真的是想要的么? 而不是这样的么:

line.gsub!(/(\\x[0-9a-fA-F]{2})+/) do |x|
          [x.delete('\\\\x')].pack('H*')
end

上面按照您的写法
perl代码的line返回值是空啊。

下面的代码能给讲解一下么?非常感谢
line.gsub!(/(\\x[0-9a-fA-F]{2})+/) do |x|
          [x.delete('\\\\x')].pack('H*')
.........

[Copy to clipboard] [ - ]
CODE:
my $line = '\x47\x48';
my ($a) = ($line =~ m/\\x([0-9a-fA-F]{2})/g)[-1];
$line = pack('H*', $a);
print $line;
....................
H

不是空啊

>下面的代码能给讲解一下么?非常感谢
>line.gsub!(/(\\x[0-9a-fA-F]{2})+/) do |x|
>         [x.delete('\\\\x')].pack('H*')
就是对每个满足/(\\x[0-9a-fA-F]{2})+/的子字符串作  进行[x.delete('\\\\x')].pack('H*')运算.
看个例子:
line = 'abcabc'
line.gsub!(/a/) do |x|
  x = 'b'
end
# line is bbcbbc