2

我是 Perl 的新手,无法找到这个特定问题的答案。我正在解析一些文本。我希望将一行中的一些条目用作其他行的输入。在下面,我希望将 $sec 用于以“M”开头的消息。我的代码如下:

#identify the type of message here:
my $message = substr $_, 0, 1;

if ($message eq "T") {

    my $sec = substr $_, 1, 5;

    #no ms entry here
    my $ms = 66666;

    push @add_orders, $_;
    print add_order_file "$sec, $ms\n";  
}

if ($message eq "M") {

    my $ms=substr $_, 1, 3;
    push @add_orders, $_;

    #I want $sec to be from the previous 
    print add_order_file "$sec, $ms \n";
}
4

1 回答 1

2

在循环之前和之外声明$sec变量,这样值可以在迭代之间保持不变。

my $sec;

# The loop - I've guessed it's a while loop iterating over lines in a file.
while ( <> ) {

    my $message = substr $_,0,1;

    if ( $message eq "T" ) {
        # Assign to $sec here
    }
    if ( $message eq "M" ) {
        # Use $sec here
    }

} # End of the loop.

这里有很多假设:如果 a 后面有多个Ms,T它们都使用相同的$sec值,等等。

于 2012-09-03T22:40:26.950 回答