#!/usr/bin/perl -w #author: North use strict; my $dataFile = "mtg-cards-data.txt"; my $setsFile = "mtg-sets-data.txt"; my %sets; my @setCards; # gets the set name my $setName = $ARGV[0]; if(!$setName) { print 'Enter a set name: '; $setName = ; chomp $setName; } open (DATA, $dataFile) || die "can't open $dataFile"; while(my $line = ) { my @data = split('\\|', $line); if ($data[1] eq $setName) { push(@setCards, \@data); } } close(DATA); open (DATA, $setsFile) || die "can't open $setsFile"; while(my $line = ) { my @data = split('\\|', $line); $sets{$data[0]}= $data[1]; } close(DATA); sub cardSort { if (@{$a}[2] < @{$b}[2]) { return -1; } elsif (@{$a}[2] == @{$b}[2]) { return 0;} elsif (@{$a}[2] > @{$b}[2]) { return 1; } } my $toPrint = ''; foreach my $card (sort cardSort @setCards) { if ($toPrint) { $toPrint .= "\n"; } $toPrint .= "@{$card}[2]|@{$card}[0]"; } open CARD, "> " . lc($sets{$setName}) . ".txt"; print CARD $toPrint; close CARD;