#!/usr/bin/perl -w use strict; use warnings; use Data::Dumper; use File::Slurp; use Text::CSV; my $csv = Text::CSV->new({ binary => 1 }) or die "Cannot use CSV: ".Text::CSV->error_diag(); $csv->eol("\n"); binmode STDOUT, ':utf8'; my $out = \*STDOUT; for my $file (glob 'appdetails/*.json') { my ($id) = $file =~ /(\d+)/; my $details = read_file($file, binmode => ':utf8' ); my ($required_age) = $details =~ m{"required_age":"?(\d+)}; my ($metascore, $metacritic_url) = $details =~ m/"metacritic":\{"score":"?(\d+),"url":"(.*?)"/; $_ //= '' for $required_age, $metascore, $metacritic_url; $metacritic_url =~ s/\\//g; (my $metacritic_name = $metacritic_url) =~ s{http://www.metacritic.com/game/pc/}{}; $csv->print($out, [$id,$required_age,$metascore,$metacritic_name]); }