因此,我編寫了一個腳本,用於計算4 ^(0)到4 ^(10)的階乘因子,因爲我想測試運行時間,並且我還想比較斯特林的近似值與實際的數字位數的各個階乘。如何在Perl中打印匹配的下一行?
所以我有這個數據稱爲factorials.txt 包含例如以下數據的文件:
The factorial of 1 is
1
The factorial of 4 is
24
The factorial of 16 is
20922789888000
The factorial of 64 is
126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000
我想階乘的輸出爲以下幾點:
Factorial 1: 1 digits.
Factorial 4: 2 digits.
Factorial 16: 14 digits.
Factorial 64: 90 digits
我能夠編寫一個腳本來獲取這些值,在我對___階乘的陳述之後...在下一行是階乘的值。但是我無法在比賽結束後選擇下一行,因此我使用while循環通過匹配字母不存在的文件編寫了很多內容,然後在線上打印字符長度。它有效,但我不認爲它效率很高。
#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';
my $file = 'factorials.txt';
my $filehandle;
open($filehandle, '<', $file) or die "Could not open file $_ because $!";
while(my $line = <$filehandle>)
{
chomp $line;
my $index = $.;
if($line !~ m/[a-z]/)
{
say length($line);
}
}
我的腳本中的以下輸出,例如:
1
2
14
90
我想解析腳本,如果就行字「階乘」匹配,打印下一行字符的長度。我相信這一定是可能的,但我似乎無法弄清楚如何去下一條線。
任何想法?非常感謝!
你需要什麼的'$ index'? – simbabque
我認爲這可能很有用,因爲$ index是特殊變量「$」。包含行號。所以如果我打印if($ index == 2){say $ line;},它會打印第2行換行符。但我無法弄清楚如何根據它匹配的行增加索引。 – xyz123
我不確定我是否得到了它 - 你是否想要處理開頭顯示的文件,所以要將數字的數字追加到'N is'的因子行,但在結果中保留以下行? – zdim