#!/usr/bin/perl use strict; use warnings; my $file = shift; die "no file $file" unless -f $file; open (my $fh, '<', $file) or die "Could not open $file: $!"; my @mirrors; my $data; while (my $line = <$fh>) { chomp $line; if ($line =~ /([^:]+): (.*)/) { my $key = lc($1); my $value = $2; $data->{$key} = $value; } elsif ($line eq '') { push @mirrors, $data; $data = undef; } else { print "Malformed line: $line\n"; } } push @mirrors, $data if $data; foreach my $mirror (@mirrors) { my ($c, $r) = split (/ +/, $mirror->{'country'}); printf ("%s http://%s%s\n", $c, $mirror->{'site'}, $mirror->{'grml-http'}); if ($mirror->{'grml-ftp'}) { printf ("%s ftp://%s%s\n", $c, $mirror->{'site'}, $mirror->{'grml-ftp'}); } if ($mirror->{'grml-rsync'}) { printf ("%s rsync://%s/%s\n", $c, $mirror->{'site'}, $mirror->{'grml-rsync'}); } }