#!perl HELP "market" => "Edit market list"; my $filename = 'revbank.market'; sub _read_market { open my $fh, '<', $filename or die "$filename: $!"; my %market; while (readline $fh) { /^\s*#/ and next; /\S/ or next; chomp; my ($user, $id, $seller, $space, $description) = split " ", $_, 5; $market{$id} = { user => $user, seller => $seller, space => $space, description => $description, }; } return \%market; } sub command :Tab(market,&tab) { my ($self, $cart, $command) = @_; if ($command eq 'market') { system $ENV{EDITOR} || 'vi', $filename; return ACCEPT; } my $product = _read_market->{ $command } or return NEXT; my $username = parse_user( $product->{ user }) or return NEXT; my $seller = parse_amount($product->{ seller }) or return NEXT; my $space = parse_amount($product->{ space }) or return NEXT; my $description = $product->{description}; $cart->add(undef, -($seller + $space), $description,{product_id=>$command}); $cart->add($username, 0+$seller, "\$you bought $description") if 0+$seller; return ACCEPT; } sub tab { return grep /\D/, keys %{ _read_market() }; }