I'm coming to Ruby with a Python & Common Lisp background.

1.  is there a builtin way to print an array so that it looks like an array?
    a=[1,2,3,4]
    print??? a        # should print [1,2,3,4]
    Equivalently for hashes?
    I'm looking for the equivalent array/hash printing behavior of Python.

2.  Much to my surpise array (or hash) access with an invalid index (or key)
    returns nil rather than raise an exception.  An interesting and surely
    much discussed language design choice.  Ruby's strong Perl heritage may
    partially account for this.  I suppose most of the time out-of-bound
    errors in arrays may be avoided by using Ruby's very nice iterators.
    But on the occasion when direct element access is needed what is the
    idiomatic way of avoiding out of bound errors in arrays (equivalently in
    hashes)?  (Doing apriori index/key validation checks? ... seems way too
    cumbersome ...)

Thanks in advance.

Raja