В ответ на комментарии @Ted Hopp я решил посмотреть, смогу ли я сделать это, сохранив пробел.Я также поставил условие, что делать с пробелами до и после удаленного слова.Да, это излишне, но я откладываю делать что-то еще.
#!/usr/bin/perl
use strict;
use warnings;
my $word_to_remove = 3;
my $remove_leading_space = 0;
my $remove_trailing_space = 1;
while(my $in_string = <DATA>) {
chomp $in_string;
my @fields = split(/(\s+)/, $in_string);
my $field_to_remove = 2*$word_to_remove - 2;
#back up the splice position if removing leading space
$field_to_remove -= ($remove_leading_space) ? 1 : 0;
#move forward if there are is a leading portion of whitespace
$field_to_remove += ($fields[0] eq '') ? 2 : 0;
my $total_to_remove =
1 +
(($remove_leading_space) ? 1 : 0) +
(($remove_trailing_space) ? 1 : 0);
splice(@fields, $field_to_remove, $total_to_remove);
my $out_string = join('', @fields);
print $out_string . "\n";
}
__DATA__
one two four five
one two four five
one two four five