in reply to Re: Generate the perl sequence 1, 11, 111, .... in thread Generate the perl sequence 1, 11, 111, ....
Is there some name for this kind of sequence
1 liner :-)
Re^3: Generate the perl sequence 1, 11, 111, ....
by matrixmadhan (Beadle) on Oct 10, 2008 at 08:24 UTC
|
Hello all,
This is my very first post/reply to perlmonks.org :)
my $one_literal = "1";
my $counter = 1;
while ( 1 ) {
for ( my $i = 1; $i <= $counter; $i++ ) {
printf "$one_literal";
}
printf "\n";
$counter++;
}
| [reply] [d/l] |
|
Do you mind if I offer a critique? There are a few minor points that could be improved.
-
If all that $one_literal can contain is "1", then the variable isn't needed.
If $one_literal can contain something other than "1", then it's misnamed.
-
Speaking of being misnamed, $one_literal doesn't contain a literal. It contains a string. String literals are pieces of source code that get compiled into strings. They don't exist anywhere but in source code.
-
The first argument of printf is a formatting string. Using it to print arbitrary string is a trap waiting to be sprung. Instead, use print or printf('%s', ...).
-
The C syntax for "for" loops (for ( my $i = 1; $i <= $counter; $i++ )) is much more complex than alternative syntax Perl provides (for my $i ( 1..$counter )). That makes it more error-prone and harder to parse mentally (small variations will be obscured).
| [reply] [d/l] [select] |
|
No, I don't mind at all. In fact, I would be glad to correct my mistakes and improve perl coding.
"That makes it more error-prone" - Did you mean the C style for loop syntax. I don't understand why that would be error-prone ?
| [reply] |
|
|
|
| [reply] [d/l] [select] |
|
|
Hello all, This is my very first post/reply to perlmonks.org :)
I personally believe, then, in addition to the Perl-specific points addressed by ikegami (which I was about to point out myself...) that as a behavioural rule you should have posted your reply not as a comment to a more or less random entry of this thread, but as one to the root node because it anwers the latter not the former.
| [reply] [d/l] |
|
Please pardon my ignorance.
Only after replying to another reply - I realized that I should not have done that instead it should have been a direct reply. In most of the forums there isn't any concept of direct/indirect replies, so I was not aware of that.
Next time, I will make sure about direct or indirect reply accordingly before posting.
Sorry again.
| [reply] |
|
|