# Octal Representation

This post is part of a series on Mohammad Anwar’s excellent Perl Weekly Challenge, where Perl and Raku hackers submit solutions to two different challenges every week. (It’s a lot of fun, if you’re into that sort of thing.)

Challenge 1 this week is an easy one:

Write a script to print decimal number 0 to 50 in [the] Octal Number System.

## Perl and Raku

We can solve this with the following polyglot (runs in both languages at once):

```printf "Decimal %2d = Octal %2o\n", \$_, \$_ for 0..50;
```

Still, in Raku, we can do the following:

```say (0..50).fmt('Decimal %1\$2d = Octal %2o', "\n");
```

We are able to do this by re-using the argument to `fmt`. That `fmt`/`printf` syntax doesn’t tend to get used often, but it’s been around for a very long time, and works in many other languages, including Perl:

```printf 'Decimal %1\$2d = Octal %1\$2o'."\n", \$_ for 0..50;
```

We are able to use the first argument twice thanks to the `1\$` between the `%` and the type (`d` or `o` in this case). `n\$` is a POSIX extension that tells `printf` to use the nth argument, instead of whatever might be next in the list.

GitHub solutions: Perl, Raku.