[[ 0 == [[:IDENT:]]## ]]; print $? 0 That's fine. However, it also accepts 0[a-z]: [[ 0q == [[:IDENT:]]## ]]; print $? 0 Shouldn't it be defined something like: (<->|[A-Za-z_][A-Za-z0-9_]#)? So that it accepts $0, and also var0? but not 0var? -- Best regards, Sebastian Gniazdowski