perl正则表达式,文件读取常用方法
发布时间:2020-12-16 00:29:17 所属栏目:大数据 来源:网络整理
导读:好久没有写perl脚本了,最近电脑上面有《prison break》的音频,也有srt的歌词,不过歌词不对,最后进行下面的脚本处理后,可以变听变看字幕了。主要是用来复习下perl脚本,正则表达式,文件读取,循环,条件等#! /usr/bin/perl #print 'done';# my $file =
好久没有写perl脚本了,最近电脑上面有《prison break》的音频,也有srt的歌词,不过歌词不对,最后进行下面的脚本处理后,可以变听变看字幕了。 主要是用来复习下perl脚本,正则表达式,文件读取,循环,条件等 #! /usr/bin/perl #print 'done'; # my $file = '<E:Prison Break1Prison Break - 1x02 - Allen [eng-subtitle].srt'; # my $out = '>E:Prison Break1P02.srt'; # open(FILE,$file) or die "$!n"; # open(RESULT,$out) or die $!; my $dirMp3AndLrc = 'E:Prison Break1'; #MP3,lrc文件都在此文件夹中, my $dirLrcTarget = 'E:PB'; opendir(MP3_AND_LRC,$dirMp3AndLrc) or die $!; my @mp3; #mp3格式 my @lrc; #lrc格式 my $hashMp3; my $hashLrc; while($file = readdir(MP3_AND_LRC)) { # $i = 0; if ($file =~ /.srt$/) { # push @lrc,$file; # print $file . "n"; my $lyric = "<$dirMp3AndLrc$file"; open(SRT,$lyric) or die "$!n"; open(RESULT,">$dirLrcTarget$file") or die "$!n"; # print ">$dirMp3$filen"; my $li; my @final; my @lines = <SRT>; for(my $i=0; $i<@lines; $i++) { $line = $lines[$i]; # # print 'before: i=' . $i . '; v=' . $line;#. "n"; # $li .= $li2; # # print 'after: i=' . $i . '; v=' . $line;#. "n"; # $line =~ s/[rn]//; if ($line =~ /(^d)/ or $line =~ /(^$)/s){ # @final[] = $line; # print "tagn"; push @final,$line; } else { # print "real=n"; my $realWords = ''; my $tmp; for ($tmp = 0; $tmp<@lines; $tmp++) { # print 't=' . $tmp . "n"; # print 'v=' .$lines[$i+$tmp] . "n"; if ($lines[$i+$tmp] =~ /(^d)/ or $lines[$i+$tmp] =~ /(^$)/s){ last; } else { $realWords .= $lines[$i+$tmp]; } } $i += $tmp; $realWords =~ s/n/ /g; push @final,$realWords . "nn"; print 'realWords=' . $realWords . "n"; } } # print 'line=' . $li; print RESULT @final; close(SRT); close(RESULT); } } # foreach(@lrc) { # $name = $_; # $list = substr($name,17,2); # $list =~ s/^0//; # $name =~ s/.srt$//; # rename "$dir$list.mp3","$dir$name.mp3"; # print "before modify: $dir$list.mp3,nnafter modify: $dir$name.mp3n"; # } closedir PB; exit; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |