# Program to extract individual files from an Xnews .mbx file # Usage: "perl mbx-extract.pl " # # Copyright 1999 by Murray Peterson # Freeware -- any use by anyone is acceptable # # -------------------------------------------------------------------------- use strict; my (@article, $mbxfile, $file, $newfile, $line); # -------------------------------------------------------------------------- $mbxfile = $ARGV[0]; if ($mbxfile eq "") { printf("Usage: perl $0 \n"); exit(1); } if (!open(DAT, "$mbxfile")) { printf("\nUnable to open mbx file $file\n"); exit(1); } while() { $line = $_; if ($line =~ /^From \?\?\?/) { # Its a new message - close off the old one if ($newfile ne "") { print NEWFILE @article; close(NEWFILE); } $newfile = ""; @article = ""; } elsif ($line =~ /^Subject:/) { # a new file name $line =~ s/^Subject: *//; $newfile = $line; # Clean up the file name so it will open chomp($newfile); $newfile =~ s/ +/-/g; $newfile =~ s/[^a-zA-Z0-9 ]/\-/g; $newfile .= ".txt"; while (open(NEWFILE, "< $newfile")) { # It already exists -- add a digit to the end $newfile =~ s/.txt$/.1.txt/; close(NEWFILE); } if (!open(NEWFILE, "> $newfile")) { printf("Unable to open file: %s\n", $newfile); exit(1); } } push(@article, $line); # save line } if ($newfile ne "") { print NEWFILE @article; close(NEWFILE); } close(DAT); # --------------------------------------------------------------------------