One way would be to create a CSV file and then import that into your spreadsheet:
my $filename = '/path/to/file.csv';
open (my $fh, '>', $filename) or die "Could not open $filename, $!";
my @headers = qw(
DET
IN
JJ
NN
VBD
);
print $fh join(',',@headers) . "\n";
# then, for each of your phrases
print $fh join(',', map($tags{$_} || 0, @headers) ) . "\n";
close $fh;
However, if you intend to do the tagging at different times you will need a way to update the data. You could use Spreadsheet::WriteExcel but there is a learning curve and probably overkill. Alternatively, you can keep your spreadsheet data as a CSV file and append to that file, or use Tie::Array::CSV to append:
use Tie::Array::CSV;
my $filename = '/path/to/file.csv';
tie my @file, 'Tie::Array::CSV', $filename;
# (this bit has been fixed - see comment below)
# for each of your phrases
my @row = map { $tags{$_} || 0 } @headers;
push(@file,\@row);
untie @file;
|