Recent Posts
Recent Comments
Link
11-29 16:02
동글동글 라이프
음악을 들어보자! #2 본문
첫번째로 mp3list.pm 모듈을 만들어 보자.
이것은 해당 폴더 안에 있는 mp3파일을 모두 찾아주며
경로까지 붙여 저장 시켜주는 모듈이다.
- mp3list.pm
package mp3list;
use Exporter;
use strict;
use vars qw( @ISA @EXPORT_OK $VERSION );
use Cwd;
@ISA = qw( Exporter );
@EXPORT_OK = qw(folder_name);
$VERSION = '0.1';
sub folder_name {
my $folder = shift;
my @list;
my $cwd = fastcwd()."/$folder";
opendir( DIR, $cwd ) or die "ls $cwd : $!\n";
foreach ( readdir(DIR) ) {
push @list,"$cwd/$_" if(m!.+\.mp3!);
}
closedir DIR;
#print join "\n",@list;
return @list;
}
1; |
전종필님의 ls명령어 구현하는 코드를 참고하여 만들었으며
일단 메인 소스에 구현을 한 뒤에 모듈로 만들어 보았다.
모듈 사용하는 김에 $VERSION도 추가 !
까다로웠던 부분은
my $folder = shift;
넘긴 인자값을 shift로 받아오는 이 부분을
my $folder = @_;
배열로 받아버려 perl프로그램이 맛이 가는 현상을 맛보게 되었다...
이 작은 오타 하나 때문에 매우 답답함을 격었다....
디버깅 할 수도 없고..ㅡ.ㅠ
- mp3player.pl
use strict;
use Win32::MediaPlayer;
use mp3list 0.1 qw(folder_name);
my @Mp3_list = folder_name('myMusic');
my $all = 1;
while($all){ #$all변수에 따라 전체 반복
my $count = 0;
foreach(@Mp3_list)
{
$count++;
my $winmm = new Win32::MediaPlayer;
$winmm->load($_);
$winmm->play;
$winmm->volume(100);
$winmm->seek('00:00');
m![^\/]+\.mp3!ix; #/를 제외한 파일명을 저장한다.
print "Playing MP3 file : $&\n" ;
#$winmm->pause;
#$winmm->resume;
#Next Mp3 file
if($count != $#Mp3_list+1){
$Mp3_list[$count] =~ m![^\/]+\.mp3!ix;
print "Next MP3 file : $&\n";
}else{
print "다음곡이 없습니다 \n";
}
print 'Total Length : '.$winmm->length(1),$/;
print 'Now Position : ';
while($winmm->pos(1) ne $winmm->length(1) ){
print $winmm->pos(1)."\b\b\b\b\b";
}
$winmm->pause;
}
}
__END__
mp3list 모듈은 폴더안의 mp3 파일을 읽어온 뒤 목록들을 나열 한다. |
$all 변수에 따라서 전체 반복을 설정 가능하게 하였고
다음곡을 출력하는 기능을 추가했다.
- 추가 되어야 될 소스
전체 반복일때와 그렇지 않을 때
전체 반복일때는 다음곡이 맨 처음 곡으로 나와야 하는 알고리즘 구현
천체 반복이 아닐때는 뭐.. 그냥 다음 곡이 없다고 나오면 될 것
오늘안에 랜덤재생도 한번 구현이나.. 후욱;;
'개발자 이야기 > Perl' 카테고리의 다른 글
음악을 들어보자 #3 (5) | 2008.10.12 |
---|---|
perl pack/unpack (1) | 2008.10.11 |
음악을 들어보자! (1) | 2008.10.08 |
Chapter 4. Getting Started (3) | 2008.10.07 |
Tutorial Availability & Introduction (0) | 2008.10.07 |
Comments