#!/usr/bin/perl
# Skript zum nahtlosen zusammenfügen von mehreren Dateien.
# (c) 2003 Robert Weiler
# GPL'ed
use strict;
sub script_header();
sub usage();
&script_header();
if (scalar @ARGV <= 0)
{
&usage();
exit;
}
my $regex = $ARGV[0];
my $newfilename = $ARGV[1];
my ($filename, $line, @filelist, @matched);
opendir DIR, "." or die "$!\n";
@filelist = readdir DIR or die "$!\n";
closedir DIR;
foreach $filename (@filelist)
{
if (! -d $filename and $filename =~ /$regex/)
{
push(@matched, $filename);
}
}
if (scalar @matched > 0)
{
@matched = sort(@matched);
print "Matched:\n";
foreach $filename (@matched)
{
print " $filename\n";
}
if ($newfilename ne "" and ! -e $newfilename)
{
open NEWFILE, ">$newfilename" or die "$!\n";
print "\nStarting to join files, output file:\n $newfilename\n";
foreach $filename (@matched)
{
print " -> $filename\n";
open MERGEFILE, "$filename" or die "$!\n";
while ($line = )
{
print NEWFILE $line;
}
close MERGEFILE;
}
close NEWFILE;
}
elsif (-e $newfilename)
{
print "\nThe file $newfilename already exists.\n";
print "Not joining anything.\n";
}
}
else
{
print "No files matched your regex.\n";
}
### die Subroutinen
sub script_header()
{
print "filejoin.pl 0.1.0 - a script for joining files\n";
print "(c) 2003 Robert Weiler \n";
print "\n";
print "filejoin.pl comes WITH ABSOLUTELY NO WARRANTY. See the GNU General Public\n";
print "License for details.\n";
print "\n";
}
sub usage()
{
print "Usage: ./filejoin.pl regex newfile\n";
print "\n";
print " regex any regular expression Perl can handle, without the slashes\n";
print " newfile the name for the joined file\n";
print "\n";
print "The newfile argument is optional. If called without this argument filejoin.pl\n";
print "will just list all files that match the regex.\n";
}