AST-Users,
I had written a function essentially like "loadTheArrayVer2" below. In the
calling code, after calling the function, my array was dead empty. To my way of
thinking, this behavior is most unexpected, If this is proper, then please help
me understand the logic behind it, so that I don't make the same mistake again.
$ cat kshScopeIssue
function loadTheArrayVer1
{
nameref array_ref=$1
print | for i in justOnce; do array_ref[ jdoe ]='John Doe'; done
}
function loadTheArrayVer2
{
nameref array_ref=$1
print | for i in justOnce; do array_ref[jdoe]=' John Doe '; done | while read;
do :; done
}
function loadTheArrayVer3
{
nameref array_ref=$1
for i in justOnce; do array_ref[ jdoe ]=' John Doe '; done | while read; do :;
done
}
print ${.sh.version}
#--- The following three groups (4 lines each) differ only by the numeric
character at the end of the function names.
unset array
typeset -A array
loadTheArrayVer1 array
print "Using loadTheArrayVer1: ${arr...@]}"
unset array
typeset -A array
loadTheArrayVer2 array
print "Using loadTheArrayVer2: ${arr...@]}"
unset array
typeset -A array
loadTheArrayVer3 array
print "Using loadTheArrayVer3: ${arr...@]}"
$ ./kshScopeIssue
Version JM 93t+ 2010-02-02
Using loadTheArrayVer1: John Doe
Using loadTheArrayVer2:
Using loadTheArrayVer3:
Thanks,
Dan
_______________________________________________
ast-users mailing list
[email protected]
https://mailman.research.att.com/mailman/listinfo/ast-users