Forum Discussion

Steve_Brown_882's avatar
Historic F5 Account
Aug 12, 2011

Issue with scan commend?

I am working on what should be a really simple irule, but for some reason I cannot get the scan command to work. I have simplified the entire rule down to the following code to trouble shoot.





set hh [string tolower [HTTP::host]]


log "$hh"


scan $hh %s.%s.%s.%s h1 h2 h3 h4


log "$h1 $h2 $h3 $h4"





The first log statement works and produces a log with something in the format of "" but I get an error when the second log fires.



TCL error: sample_scan - can't read "h2": no such variable while executing "log "$h1 $h2 $h3 $h4""



I am just formatting the scan wrong?


2 Replies

  • Colin_Walker_12's avatar
    Historic F5 Account
    Muhammad's got it right, although you'd need one more iteration if you wanted 4 sections. The reason that your %s wasn't working is that it is greedy and eats up everything until the next space, including the "." characters.

    From the reference:



    The input field consists of all the characters up to the next white-space character; the characters are copied to the variable."

    So in your case, to grab all four sections, you'd want something like:

    scan $hh {%[^.].%[^.].%[^.].%[^.]}

    tclsh testing:

    % set hh
    % scan $hh {%[^.].%[^.].%[^.].%[^.]}
    sub host domain suf

    Keep in mind you could replace the last [^.] with a %s in case you end up with more than four chunks.