Hi! ----
It seems the [[ -v varname ]] operator is (again) broken for .sh.match in ast-ksh.2012-07-27: Example: -- snip -- $ ksh -c 's="aaa bbb 333 ccc 555" ; s="${s//~(E)([[:alpha:]]+)|([[:digit:]]+)/NOP}" ; integer i=2 j=3 ; [[ -v .sh.match[i][j] ]] && print fail' fail -- snip -- The .sh.match array contains... -- snip -- ( ( [0]=aaa [1]=bbb [2]=333 [3]=ccc [4]=555 ) ( [0]=aaa [1]=bbb [3]=ccc ) ( [2]=333 [4]=555 ) ) -- snip -- ... which means .sh.match[2][3] is definately not set... but [[ -v .sh.match[2][3] ]] returns 'true'. <frustration> This is much fun since I tried to write the (or better: a ksh93 version) DocBook2astgetopts parser tonight... but it turns out without being able to use .sh.match properly and check for "no match" with [[ -v .sh.match[x][y] ]] there is no way to do it... ;-( </frustration> BTW: This must work, too (without producing differences in "diff"): -- snip -- # copy .sh.match to ar integer i j for (( i=0 ; i <= ${#.sh.match[@]} ; i++ )) ; do for (( j=0 ; j < ${#.sh.match[i][@]} ; j++ )) ; do [[ -v .sh.match[i][j] ]] && ar[i][j]="${.sh.match[i][j]}" done done diff -u <(print -v ar) <(print -v .sh.match) -- snip -- ---- Bye, Roland -- __ . . __ (o.\ \/ /.o) roland.ma...@nrubsig.org \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 641 3992797 (;O/ \/ \O;) _______________________________________________ ast-developers mailing list ast-developers@research.att.com https://mailman.research.att.com/mailman/listinfo/ast-developers