use strict;
use warnings;
+no warnings qw(exec);
+
BEGIN {
use Exporter ();
our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
$commods{$ucname}{Srcs} .= $ss;
my $c= $commods{$ucname};
$c->{Volume}= 1000;
+ $c->{Flags}= '';
my ($ordval, $ordclassval);
foreach my $prop (defined $props ? split /\s+/, $props : ()) {
if ($prop =~ m/^([1-9]\d*)(k?)g$/) {
} elsif ($prop =~ m/^\@(\d+\+?)$/) {
$ordval= $1;
$ordval =~ s/^(\d+)\+$/ $1 + $lnoix * 10 /e;
+ } elsif ($prop =~ m/^\!([a-z]+)$/) {
+ $c->{Flags} .= $1;
} else {
die "unknown property $prop for $ucname";
}
chomp($l) or &$bad_data('missing end-of-line');
- $l !~ m/\P{IsPrint}/ or &$bad_data('nonprinting char(s)');
+ $l =~ m/[\t [:graph:]]/ or &$bad_data('nonprinting char(s) '.sprintf "%#x", ord $&);
my @v= split /\t/, $l, -1;
@v==6 or &$bad_data('wrong number of fields');
+ $v[0] = ucfirst lc $v[0]; # YPP anomalously has "Rum Spice"
+ $v[1] =~ s/^\s+//; $v[1] =~ s/\s+$//; # ooo don't check :-(
my ($commod,$stall) = @v;
!keys %commods or
defined $commods{$commod} or
&$bad_data("unknown commodity ".errsan($commod));
- $stall =~ m/^\p{IsUpper}|^[0-9]/ or
- &$bad_data("stall not capitalised ".errsan($stall));
+ $stall =~ m/\p{IsAlnum}/ or
+ &$bad_data("stall does not contain with alphanumeric".errsan($stall));
!exists $check_tsv_done{$commod,$stall} or
&$bad_data("repeated data ".errsan($commod).",".errsan($stall));
$check_tsv_done{$commod,$stall}= 1;