gpt4 book ai didi

arrays - 我需要有关Perl中文件访问和修改的帮助

转载 作者:行者123 更新时间:2023-12-02 23:13:58 25 4
gpt4 key购买 nike

我有“segmentation”文件夹,在其中需要使用“.purseg”文件(x.purseg,y.purseg,z.purseg)。它们是文本文件。
其形式为:
'0.1 4.5 speech_L1'
'4.7 9.2 speech_L2'
等等
我也有文件夹音频,其中有“音频”:x.wav,y.wav,z.wav。
每个“.purseg”文件都匹配一个“.wav”文件,它们都具有相同的名称。
对于我的脚本,我必须从“.purseg”文件中获取信息,并基于该文件,必须从wav文件中剪切我需要的部分(将发言者提到为speech_L2)。我制作了一个脚本,如果我在同一个文件夹中同时具有“.purseg”和“.wav”文件,但是由于我要处理大量数据,因此需要修复脚本才能使用文件夹。这是脚本:

#! /usr/bin/perl -w

use List::MoreUtils qw(uniq);
use File::Path qw(make_path);
use File::Copy "cp";
use warnings;


my $directory = '/home/taurete/Desktop/diar_fem_fin/segmentation/';
opendir (DIR, $directory) or die $!;
while (my $file = readdir(DIR))
{
next unless ($file =~ m/\.purseg$/);
$file =~ s{\.[^.]+$}{};
push (@list1, $file);
# print "$file\n";
}
my $list=@list1;
# print "$list";
$i=0;
while ($i<$list)
{
my $nume1=$list[$i];
open my $fh, "$nume1.purseg" or die $!;
my @file_array;
while (my $line = <$fh>)
{
chomp $line;
my @line_array = split(/\s+/, $line);
push (@file_array, \@line_array);
}
my @arr=@file_array;
$cont1=0;
my $s1= @arr;
for (my $i=0;$i < $s1;$i++)
{
$directory="$nume1";
make_path($directory);
if ("speech_L2" eq "$arr[$i][2]")
{
my $directory = '/home/taurete/Desktop/data/audio/';
opendir (DIR, $directory) or die $!;
$interval = $arr[$i][1] - $arr[$i][0];
$speakername=$nume1._.$cont1;
`sox $nume1.wav ./$directory/$speakername.wav trim $arr[$i][0] $interval`;
$cont1++;
}
}
$i++;
}
这是我得到的:

Name "main::list" used only once: possible typo at ./spkfinal.pl line23. Use of uninitialized value $nume1 in concatenation (.) or string at ./spkfinal.pl line 27. No such file or directory at ./spkfinal.plline 27.

最佳答案

要回答有关Name "main::list" used only once: possible typo at ./spkfinal.pl line 23.的问题,请更改:

my $nume1=$list[$i];

至:
my $nume1=$list1[$i];

您没有数组 @list,但是您有数组 @list1

我认为这也会清除您随后的警告。

关于arrays - 我需要有关Perl中文件访问和修改的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24292497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com