3

Rubyファイルには次の2つの正規表現があります。コマンドを使用すると正常に動作しますが、rubyコマンドを介して実行しようとする./apachereport.rbとエラーが発生します。

正規表現:

urls = parse(@file, /(?<=GET )\S+/)
codes = parse(@file, /(?<=HTTP\/[0-9]\.[0-9]" )\S+/)

エラー:

./apachereport.rb:34: undefined (?...) sequence: /(?<=GET )\S+/
./apachereport.rb:47: undefined (?...) sequence: /(?<=HTTP\/[0-9]\.[0-9]" )\S+/

私が使用しているシバンは次のとおりです。これは、他の ruby​​ ファイルで正常に動作するようです。

#!/usr/bin/ruby
4

1 に答える 1

5

これについて最も可能性の高い説明は、複数のバージョンの ruby​​ がインストールされていることです。インストールされているバージョン/usr/bin(シバン行で使用しているバージョン) は 1.8.X で、正規表現で (後読み) をサポートしていません?<=でした。入力時に実行するのruby apachereportはおそらく ruby​​ 1.9 で、これは をサポートしてい?<=ます。

これがケースタイプであることを確認するには、入力してwhich ruby、以外のものを出力するか、/usr/bin/rubyおよび/またはの結果を比較する/usr/bin/ruby --versionことに注意してくださいruby --version

于 2011-11-20T17:30:53.420 に答える