#!/usr/bin/perl -slw use strict; use warnings; #### opendir DH, "Y://perlscripts2/software/perl2/music" or die $!; # open current directory while($_ = readdir(DH)){ # don't evaluate special dirs '.' & '..' next if $_ eq "." or $_ eq ".."; #### if ($_ =~ /\.txt/){ chomp $_; my ($artist, $song_title) = split '-', $_, 3; $length{$artist}{$artist} = $artist; $length{$artist}{$song_title} = $song_title; print "$_"; # print this file/directory's name } #### #! perl -slw use strict; use Data::Dumper; $Data::Dumper::Sortkeys = 1; my ($id,$songs_ref,$artists_ref,$albums_ref,%songs,%artists,%albums); opendir DH, "D:/music/Alice In Chains/2001 - Greatest Hits" or die $!; # open current directory while($_ = readdir(DH)){ # don't evaluate special dirs '.' & '..' next if $_ eq "." or $_ eq ".."; # music files in this directory are *.flac files with the # naming style: - - - # no need to check stat info - we're processing files that # end in .flac (notice the end-of-line match char '$'?) if (m{\.flac$}){ # tip: m{..} is another way of saying /../ # add .flac to the split pattern so that it is not # included in our "" field my ($track_num, $band, $album, $track) = split / \- |\.flac/; # increment our hash ref id so we don't overwrite entries $id++; # ------------------------------------------------------- # Example Using Hash References # ------------------------------------------------------- $songs_ref->{$id}->{TITLE} = $track; $songs_ref->{$id}->{ARTIST} = $band; $songs_ref->{$id}->{FAVOURITE} = 1 if $track eq 'Would'; $songs_ref->{$id}->{TRACK_LENGTH} = undef; # to do later $artists_ref->{$id}->{NAME} = $band; $artists_ref->{$id}->{SONGS}->{TITLE} = $track; $artists_ref->{$id}->{SONGS}->{ALBUM} = $album; $albums_ref->{$id}->{ARTIST} = $band; $albums_ref->{$id}->{NAME} = $album; $albums_ref->{$id}->{SONGS}->{TITLE} = $track; $albums_ref->{$id}->{SONGS}->{TRACK_NUM} = $track_num; # ------------------------------------------------------- # Example Using Hashes # ------------------------------------------------------- $songs{$id}{TITLE} = $track; $songs{$id}{ARTIST} = $band; $songs{$id}{TRACK_LENGTH} = undef; # to do later $artists{$id}{NAME} = $band; $artists{$id}{SONGS}{TITLE} = $track; $artists{$id}{SONGS}{ALBUM} = $album; $albums{$id}{ARTIST} = $band; $albums{$id}{NAME} = $album; $albums{$id}{SONGS}{TITLE} = $track; $albums{$id}{SONGS}{TRACK_NUM} = $track_num; } } closedir DH; # use perl's object data serializer to view our data print Dumper $songs_ref; print Dumper $artists_ref; print Dumper $albums_ref; print Dumper \%songs; print Dumper \%artists; print Dumper \%albums; __END__