立石です。

Date: Tue, 16 Feb 1999 07:02:05 +0900
From: Yasuhiro Fukuma <yasuf / big.or.jp>
yasuf> > わははそうか、今まで =~ の否定は !=~ だと思っててて
yasuf> > これを使うとなぜか期待どおりに動かんなと使わなかった
yasuf> > のだけど、!~ だったんですねえ(マニュアル読め)。
yasuf> 
yasuf> わたしはPerlで嫌というほど間違えたおかげで、しっかり頭に叩き込まれてたり
yasuf> します(^^;;

僕はPerlが不得手なので !=~ の方が良かったりします。
で、!=~が期待どおり解釈されるためのパッチを作ってみました。

			Takaaki Tateishi <ttate / jaist.ac.jp>


--- ruby-1.3.1-990215/parse.y.orig	Tue Feb 16 07:13:19 1999
+++ ruby-1.3.1-990215/parse.y	Tue Feb 16 07:31:49 1999
@@ -2433,7 +2433,7 @@
 static int
 yylex()
 {
-    register int c;
+    register int c,c2;
     int space_seen = 0;
     struct kwtable *kw;
 
@@ -2522,7 +2522,13 @@
       case '!':
 	lex_state = EXPR_BEG;
 	if ((c = nextc()) == '=') {
+	  if((c2 = nextc()) == '~' ){
+	    return tNMATCH;
+	  }
+	  else{
+	    pushback(c2);
 	    return tNEQ;
+	  };
 	}
 	if (c == '~') {
 	    return tNMATCH;



--- ruby-1.2.3/parse.y.orig	Tue Feb 16 07:35:35 1999
+++ ruby-1.2.3/parse.y	Tue Feb 16 07:37:50 1999
@@ -2303,7 +2303,7 @@
 static int
 yylex()
 {
-    register int c;
+    register int c,c2;
     int space_seen = 0;
     struct kwtable *kw;
 
@@ -2388,7 +2388,13 @@
       case '!':
 	lex_state = EXPR_BEG;
 	if ((c = nextc()) == '=') {
+	  if((c2 = nextc()) == '~'){
+	    return tNMATCH;
+	  }
+	  else{
+	    pushback(c2);
 	    return tNEQ;
+	  };
 	}
 	if (c == '~') {
 	    return tNMATCH;