Experimente este script:
#!/usr/bin/perl
use v5.14;
use warnings;
until(eof()) {
my ($id, $chan) = <> =~ /id="([^"]*)".*number="(\d+)"/;
my ($sign) = <> =~ />(.*)</;
<>; # Skip </channel>
say qq(UPDATE channel SET channum="$chan",xmltvid="$id" WHERE callsign="$sign");
}
Você também pode usar o DBI para editar o banco de dados diretamente do script.