加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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;



(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读