사무라이 참프루 20, 21화 悲歌慷慨
나데시코 보다가 sync 안 맞는 거 짜증나서
python으로 할까 하다가 익숙한 perl로 해버렸다.
gana군보다 더 원시적인 interface. (무려 hard coded!!!)
하지만, 뭐 script인데, 복잡하지 하게 하지 말자.
나데시코 보다가 sync 안 맞는 거 짜증나서
python으로 할까 하다가 익숙한 perl로 해버렸다.
gana군보다 더 원시적인 interface. (무려 hard coded!!!)
하지만, 뭐 script인데, 복잡하지 하게 하지 말자.
#!/usr/bin/perl use Socket; use POSIX; require HTML::TokeParser; open FILE, "./01.smi" || die "cannot open file"; $p = HTML::TokeParser->new(*FILE) || die "Can't open: $!\n"; #while(my $token = $p->get_tag("sync")) { # # $token->[$tag, $attr, $attrseq, $text] # print $token->[1]{start} . "\n"; #} while(my $token = $p->get_token()) { # start tag ["S", $tag, $attr, $attrseq, $text] # end tag ["E", $tag, $text] # text ["T", $text, $is_data] # comment ["C", $text] # declaration ["D", $text] # process instruction ["PI", $token0, $text] if ($token->[0] eq "S") { if ($token->[1] eq "sync") { #print "<" . $token->[1] . " Start=" . $token->[2]{start} . ">"; $tmp = $token->[1]; $tmp =~ tr/a-z/A-Z/; $start = int($token->[2]{start}); if ($start >= 20000) { $start += 9000; } if ($start >= 190908) { $start -= 94000; } print "<" . $tmp . " Start=" . $start . ">"; } else { print $token->[4]; } } elsif ($token->[0] eq "E") { print $token->[2]; } elsif ($token->[0] eq "PI") { print $token->[2]; } else { print $token->[1]; } } print "\n"; close FILE;