s4

view mpsplit.pl @ 1037:634fee6a6bd2

Add row number to title attribute after sort.
author HIROSE Yuuji <yuuji@gentei.org>
date Wed, 06 Mar 2024 09:55:20 +0900
parents 07863b13e3f9
children
line source
1 #!/usr/bin/env perl
2 $sep = "--" . $ARGV[0];
3 $dir = ($ARGV[1] || "tmp");
4 if ($dir =~ /^([^<>\;\&]*)$/) {
5 $dir = $1;
6 }
8 #print "sep=".$sep, "dir=$dir\n";
9 #binmode STDIN;
10 $/ = undef;
11 $stream = (<STDIN>);
12 $n=0;
13 @slices = split($sep, $stream);
14 shift(@slices);
15 pop(@slices);
16 foreach $item (@slices) {
17 $item =~ s/^\n//;
18 ($header = $item) =~ s/\r\n\r\n.*//s;
19 ($body = $item) =~ s/.*?\r\n\r\n//s;
20 $body =~ s/\r\n$//;
21 #print "h=[$header]\n";
22 #print "b=[$body]\n";
23 unless ($header =~ /\bname=([\"']?)(.*?)\1/) {
24 next;
25 }
26 $name = $2;
27 #print "name=$name\n";
28 if ($header =~ /filename=(['\"]?)(.*?)\1/ && $2 gt "") {
29 $fn=$2;
30 if ($fn =~ /^([^\/]*)$/) {
31 $fn = $1;
32 }
33 $fn =~ s/[ <>&\#'\"\&|*?]/_/g;
34 $fn =~ s,.*[/\\],,;
35 open(OUT, ">$dir/$fn");
36 print OUT $body;
37 close(OUT);
38 printf("%s:filename=%s\n", $name, unpack("H*", $fn));
39 } else {
40 printf("%s=%s\n", $name, unpack("H*", $body));
41 }
42 }