#!/usr/bin/perl
use warnings;
use strict;
push @INC, "C:/Perl/Modules";
print "What is current download directory? ";
my $dir = <STDIN>;
opendir DH, $dir or die "Can't open directory...";
my $parent = $_;
while ($parent = readdir(DH))
{
next if $parent eq "." or $parent eq "..";
if(-d $parent)
{
opendir DI, "$dir/$parent" or die "Can't open directory...";
while ($_ = readdir(DI))
{
next if $_ eq "." or $_ eq "..";
if (/(\w+ )(\d+)\b(\d+)\b(.*)(\d+)/)
{
print "Long File";
our $month = $1;
our $day = $2;
our $year = $3;
our $name = $5;
}
else if(/(\w+ )(\d+)\b(\d+)\b(.*)(\d)\b/)
{
print "Short File";
our $month = $1;
our $day = $2;
our $year = $3;
our $name = $5;
}
}
}
}
print "Done";
I use Windows Vista with ActivePerl.
Basically I have a bunch of folders within a large parent folder each with two mp3 files and a txt file (which I don't care about) in this format:
Month DD YYYY . Name . ##(#)kbps . XX(X) minutes.mp3
the two mp3 files are exactly the same format that the ones with two digit minutes I want to name one way (lets say "short") and ones with 3 digits I want to name another way (lets say "long"). I also have other mp3 files which are not in this format and I cannot figure out a way to grab the length or bitrate of an mp3 file in perl (maybe someone can help with this too).
Anyway, this code does not run. I get a syntax errors at lines 28 and 38. I am using 'else if' wrong probably...
(ignore my misplaced mys and ours)
I am very new to Perl programming and would love some help. Thanks.