小编zub*_*nel的帖子

多个文件句柄打开同一个文件 - 这是一个好习惯吗?

我有一个包含三列显示学生姓名、科目和成绩的grades.tsv 文件:

Liam    Mathematics 5
Liam    History 6
Liam    Geography   8
Liam    English 8
Aria    Mathematics 8
Aria    History 7
Aria    Geography   6
Isabella    Mathematics 9
Isabella    History 4
Isabella    Geography   7
Isabella    English 5
Isabella    Music   8
Run Code Online (Sandbox Code Playgroud)

我想计算每个学生的平均成绩并将其添加到单独的列中。为此,我使用了两个文件句柄 DATA 和 OUT 打开同一个文件:

use strict;
use warnings;

# Open file with grades for calculation of average grade for each student
open (DATA,"grades.tsv") or die "Cannot open file\n";

my %grade_sums;
my %num_of_subjects;

# Calculate sum of grades and number of subjects …
Run Code Online (Sandbox Code Playgroud)

perl filehandle

6
推荐指数
1
解决办法
217
查看次数

用开始、结束和步骤对字符串进行切片的 Perl 函数

我想使用 start、end 和 step 对字符串进行切片。让我们假设开始坐标是 1,结束坐标是 22,步长是 3。切片字符串应该只选择坐标 1、4、7、10、13、16、19、22 中的元素。我写了一个函数 get_subseq这样做。在 Perl 中是否有更短的方法来做到这一点?

sub get_subseq {
    my ( $seq, $start, $end, $step ) = @_;
    my $index = $start;
    while ( $index <= $end ) {
        print substr $seq, $index, 1;
        $index += $step;
    }
}

my $sequence = 'AGGGTAGAGTGAGAAGCACCAGCAGGCAGTAACAGC';

# The result should be GTAGACCC
get_subseq( $sequence, 1, 22, 3 );
Run Code Online (Sandbox Code Playgroud)

string perl

1
推荐指数
2
解决办法
317
查看次数

标签 统计

perl ×2

filehandle ×1

string ×1