As with PHP, reusing the same sigil for everything misses the point of sigils rather badly. I count five instances of two sigils in your example and each sigil character has another syntactic meaning within the same line.
If sigil means non-ascii character, there are six. If you use it to mean name-modifier (changes what the following string means) there is one, the colon. What did you mean?
And yes, colon is also the or in the ternary operator.
But there are still less than Perl, for the same length of code, and the code is simpler - .call() the thing if it.respond_to?(:call)