use Class::Struct; struct Document => { fileid => '$', filename => '@', tags => '@' }; my $doc = Document->new( fileid => 2, filename => [qw(a b c)], tags => [qw(d e f)] ); print "File ID: ", $doc->fileid, "\n"; print "Filename: ", @{$doc->filename}, "\n"; print "Tags: ", @{$doc->tags}, "\n";