Perl режещ низ

Имам масив от числа и файл с низове изглежда като по-долу и съм записал perl код, който наименува string cutter. Мога да получа изрязаните низове, но не мога да получа първите "n" низове, зададени от масива от числа. Някаква идея? Не знам защо substr не работи.

string Cutter

file 1:

1234567890
0987654321
1234546789
ABCDEFGHIJ
JIHGFEDCBA

file 2: array of given length

2, 3, 4, 2, 1

Current Result:

34567890
7654321
546789
CDEFGHIJ
IHGFEDCBA

Supposed to be Result (perhaps \t delimited):
12 34567890
098 7654321
1234 546789
AB CDEFGHIJ
J IHGFEDCBA

Моят код:

#!/usr/bin/perl
use warnings;
use strict;

if (@ARGV != 2) {
    die "Invalid usage\n"
        . "Usage: perl program.pl [num_list] [string_file]\n";
}

my ($number_f, $string_f) = @ARGV;

open my $LIST, '<', $number_f or die "Cannot open $number_f: $!";
my @numbers = split /, */, <$LIST>;
close $LIST;

open my $DATA, '<', $string_f or die "Cannot open $string_f: $!";
while (my $string = <$DATA>) {
        substr $string, 0, shift @numbers, q(); # Replace the first n characters with an empty string.

        print $string;
}

Много благодаря


person Karyo    schedule 20.07.2014    source източник


Отговори (1)


perldoc -f substr:

Extracts a substring out of EXPR and returns it

Така че трябва да направите по следния начин:

    $prefix = substr $string, 0, shift @numbers, q();
    print $prefix . " " . $string;
person Lajos Veres    schedule 20.07.2014