--- caller([level])

    level ʾ(άϡ1)θƤӽФξ $@
    ηΥХåȥ졼(ʸ)Ȥ֤ޤȥåץ٥
    ϶֤ޤcaller ͤ $@ 뤳Ȥ
    㳰ȯ֤Ǥޤ

        def foo
          p caller(0)
          p caller(1)
          p caller(2)
          p caller(3)
        end

        def bar
          foo
        end

        bar

        => ["-:2:in `foo'", "-:9:in `bar'", "-:12"]
           ["-:9:in `bar'", "-:12"]
           ["-:12"]
           []

    ʲδؿϡcaller Ǥ [ե̾, ֹ, ᥽å̾] 
    Ф֤ޤ

        def parse_caller(at)
          if /^(.+?):(\d+)(:in `(.*)')?/ =~ at
            file = $1
            line = $2.to_i
            method = $4 if $3
            [file, line, method]
          end
        end

        def foo
          p parse_caller(caller.first)
        end

        def bar
          foo
          p parse_caller(caller.first)
        end

        bar
        p parse_caller(caller.first)

        => ["-", 15, "bar"]
           ["-", 19, nil]
           nil

    ʲϡ$DEBUG ξΩ debug ؿ
    ΥץǤ

        def debug(*args)
          p [caller.first, *args] if $DEBUG
        end

        debug "debug information"

        => ["-:5", "debug information"]

