summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/perl/eg/uudecode
blob: 3b3cb60a234494e8cbc817d382adc158607caef2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
while (<>) {
    next unless ($mode,$file) = /^begin\s*(\d*)\s*(\S*)/;
    open(OUT,"> $file") || die "Can't create $file: $!\n";
    while (<>) {
	    last if /^end/;
	    next if /[a-z]/;
	    next unless int((((ord() - 32) & 077) + 2) / 3) ==
		    int(length() / 4);
	    print OUT unpack("u", $_);
    }
    chmod oct($mode), $file;
    eof() && die "Missing end: $file may be truncated.\n";
}