[ic] Formatting an IC Tag Variable with Perl - How??
AS
news1 at dsl.pipex.com
Thu Nov 6 21:54:04 EST 2003
AS [news1 at dsl.pipex.com] wrote:
> I want to format an IC Tag variable with a line (or two) of Perl.
>
> I want to use this perl line:-
>
> s/(...$)/ ${1}/g;
>
> to format the [loop-data transactions zip] which should add a space 3
> characters from the end.
>
> Below is the current code from order_view page for the shipping
address,
> I have tried various ways of entering it using [perl]code[/perl] but
it
> always just prints the perl line on the screen.
>
> I really want to apply this format to the variable rather than just
> displaying it in this format, will this work? If not how can I
re-format
> it?
>
> [set ship_address]
> [loop-data transactions fname] [loop-data transactions lname]<br>
> [loop-data transactions address1]<br>
> [if-loop-data transactions address2]
> [loop-data transactions address2]<br>
> [/if-loop-data]
> [loop-data transactions city]<br>
> [loop-data transactions state]<br>
> [loop-data transactions zip]<br>
> <br>
> [/set]
>
If you want to use non-looping tags, such as [perl] then you will want
to use [seti], instead of [set], to force interpolation. If you don't
force interpolation then the tags will be printed as-is, as you have
seen.
The following should work within a [set] tag, as it only makes use of
looping tags. It'll also be more efficient than calling the [perl]
tag:
[loop-calc]
my $zip = q{[loop-data transactions zip]};
$zip =~ s/\s+//g; # remove existing whitespace
$zip =~ s/(...)$/ $1/; # add a space three chars from the end
$zip;
[/loop-calc]
Also, consider using [tmpn] instead of [set] (or [tmp] instead of
[seti])
if you don't need the scratch variable to be saved to the user's
session.
That's assuming you're using 4.9.x, of course.
-------------------------------------------------
Thanks, that works well, I am using 4.8.7.
If I now squirt the ship_address out to a label printer will this
formatted postcode get printed? I looked in the database and the
postcode still retains the old format.
I can't try it yet as I am waiting for the printer to arrive.
Thanks,
Andy.
More information about the interchange-users
mailing list