#I like commas at the beginning so that I know the line
#is a continuation of the previous, but others like commas
#at the end of each line. The main thing is one assignment
#per line.
my %TagsMPEG = ('comment' => \&_Get_Comment
, 'genre' => \&_Get_Genre
, 'year' => \&_Get_Year
, 'track' => \&_Get_Track
, 'length' => \&_Get_Length
, 'bitrate' => \&_Get_Bitrate
, 'samplerate' => \&_Get_Samplerate
, 'channels' => \&_Get_Channels
);
####
$Artist{_Get_Artist($m)}{_Get_Album{$m}}{_Get_Title{$m}}=\%TagInfo;
####
sub HashMPEG {
# assign parameters useful names
# $hArtist is a hash reference
my ($f, $hArtist) = @_;
#... extract data from MPEG file
# -> operator is used when working with hash references rather
# than hashes
$hArtist->{_Get_Artist($m)}{_Get_Album{$m}}{_Get_Title{$m}}=\%TagInfo;
# no need to return anything. artist is in hash reference
# and caller has access to hash reference
}