Next | Unix Command Internals | 14 |
sub parse { my @words = grep $_ =~ /\S/, split /( \s+ | < | >> | > )/x, $_[0]; my %d; $d{program} = shift @words; while (@words) { local $_ = shift @words; if ($_ eq '<') { $d{stdin} = shift @words; } elsif ($_ eq '>' || $_ eq '>>') { $d{stdout} = shift @words; $d{append} = $_; } else { push @{$d{args}}, $_; } } %d; }
Next | Copyright © 2003 M. J. Dominus |