Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中用多个空格替换单个空格_Perl - Fatal编程技术网

在perl中用多个空格替换单个空格

在perl中用多个空格替换单个空格,perl,Perl,我需要用多个空格替换一个空格,这样第二个字段总是从一个特定的位置开始(这里36是第二个字段的位置)。 我为此编写了一个perl脚本: while(<INP>) { my $md=35-index($_," "); my $str; $str.=" " for(1..$md); $_=~s/ +/$str/; print "$_" ; } while() { my$md=35指数($); 我的$str; $str.=”表示(1..$md); $\=~s/+/$str/; 打印“$”;

我需要用多个空格替换一个空格,这样第二个字段总是从一个特定的位置开始(这里36是第二个字段的位置)。 我为此编写了一个perl脚本:

while(<INP>)
{
my $md=35-index($_," ");
my $str;
$str.=" " for(1..$md);
$_=~s/ +/$str/;
print "$_" ;
}
while()
{
my$md=35指数($);
我的$str;
$str.=”表示(1..$md);
$\=~s/+/$str/;
打印“$”;
}

有没有更好的方法只使用=~s///中的正则表达式,这样我就可以直接在CLI上使用它而不是脚本。

一种方法是使用纯ol'Perl格式:

#/usr/bin/perl
使用警告;
严格使用;
我的($第一,$第二,$剩余);
格式标准输出=

@ 假设数据中的字段由空格分隔

while (<$fh>) {
    my ($first, @rest) = split;
    printf "%-35s @rest\n", $first;
}
(或使用
split'、$\u2
代替正则表达式)


如果有其他要求,请提供更多详细信息。

将每行拆分为字段,然后使用以所需布局打印表格?或者使用Perl格式。您能为该输入显示一行或几行输入和所需的输出吗?我无法从代码中找出你到底需要什么。
while (<$fh>) {
    my ($first, $rest) = /(\S+)\s+(.*)/;
    printf "%-35s $rest\n", $first;
}