script question

Hi,
Found an interesting quirk of bro scripting. Not sure if its a quirk or a bug.

function myfunction()
{
if (T) {
local var = “Hello, World!”;
print var;
} else {
local var = “Goodbye, World!”;
print var;
}
}

For this code, I get the error:

error in ././trybro.bro, line 6 and ././trybro.bro, line 9: already defined (var)
If I make the local variable names different i.e. var and var2, it doesn't complain. I think this is a bug. Let me know...
Dk.
PS: Since I couldn't find an ends_with function, I wrote one. Let me know if this is ok...

function ends_with(input_string: string, match_pattern: string) : bool
{
  local offset = |input_string| - |match_pattern| + 1;
  local sstring = sub_bytes(input_string, offset, |match_pattern|);

  if (sstring == match_pattern)
    return T;
  else
    return F;
}


Found an interesting quirk of bro scripting. Not sure if its a quirk or a
bug.

It's a quirk actually, by which I mean known behavior since I implemented
local variables way back 'n the day. The philosophical view may have been
that it's confusing to have the same variable name mean different things
inside the same function, so good to avoid that; but I might have done it
simply for implementation convenience, I don't recall which at this point.

Given that it's surprising behavior, and arguably not particularly beneficial,
I wouldn't mind changing it.

    Vern

yeah, was surprised a little since it goes against the scoping rules of most languages I’ve dealt with scripting or otherwise…
Perhaps an update to documentation would be helpful…

Bhasker.