The return property of exclamation in front of array I am learning the drupal 7 by the example module. 
In the render_example, I don't understand the usage of the exclamation mark (!) in front of the !array and !alter.

I am sure that it is not related to the "boolean" nor "negation". 
Please kindly advise how can I find the detail of the usage.

function render_example_info() {
  return t('The render example provides a &lt;ul&gt;&lt;li&gt;&lt;a href="!arrays"&gt;demonstration of of render array usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="!alter"&gt;using hook_page_alter()&lt;/a&gt; to make various changes on a page.&lt;/li&gt;&lt;/ul&gt;', array('!arrays' =&gt; url('examples/render_example/arrays'), '!alter' =&gt; url('examples/render_example/altering')));


}

When I edit the "!array" to "$array",

function render_example_info() {
return t('The render example provides a &lt;ul&gt;&lt;li&gt;&lt;a href="$arrays"&gt;demonstration of of render array usage&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="!alter"&gt;using hook_page_alter()&lt;/a&gt; to make various changes on a page.&lt;/li&gt;&lt;/ul&gt;', array('$arrays' =&gt; url('examples/render_example/arrays'), '!alter' =&gt; url('examples/render_example/altering')));


}

the message was changed
from: 
demonstration of of render array usage  
(with hyper link "http://www.example.com/drupal/?q=examples/render_example/arrays"
to:
/drupal/?q=examples/render_example/arrays">demonstration of of render array usage
(with hyper link "http://www.example.com/drupal/&amp;5cem&amp;nbspclass=" )
t() uses format_string(), which uses strtr(). For this reason, your second example snippet works. Since format_str() is using the following code, any token that starts with a character different from !, %, or @ is treated as if the token started with %.

  foreach ($args as $key =&gt; $value) {
    switch ($key[0]) {
      case '@':
        // Escaped only.
        $args[$key] = check_plain($value);
        break;

      case '%':
      default:
        // Escaped and placeholder.
        $args[$key] = drupal_placeholder($value);
        break;

      case '!':
        // Pass-through.
    }
  }


drupa_placeholder() is the responsible for escaping some characters, since it calls check_plain().

function drupal_placeholder($text) {
  return '&lt;em class="placeholder"&gt;' . check_plain($text) . '&lt;/em&gt;';
}


As side note, since $arrays is inside a single-quote string, PHP doesn't replace it with the value of the $arrays string. If you wanted to put the content of a string into the string passed to t(), you should use a t()-placeholder, which starts with !, %, or @.