Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer


by Siggy (Novice)
on Jul 11, 2001 at 22:40 UTC ( #95801=perlcraft: print w/replies, xml ) Need Help??

   1: #!/usr/bin/perl
   2: print "What string would you like to twiddle? ";
   3: $twiddle = <STDIN>;
   4: chomp($twiddle);
   5: $length = (length($twiddle)) - 1;
   6: my (@twiddled);
   7: $twiddled[$length] = $twiddle;
   8: $early = $length - 1; #had to change to this
   9: $late = $length + 1; #from $early = $length
  10: while ($early >= 0) {
  11: 	chop($twiddle);
  12: 	$twiddled[$early] = $twiddle;
  13: 	$twiddled[$late] = $twiddled[$early];
  14: 	--$early; #these used to be right after 
  15: 	++$late; #chop($twiddle)
  16: 	}
  17: $playtime = 0;
  18: while ($playtime <= $late) {
  19: 	print $twiddled[$playtime] . "\n";
  20: 	++$playtime;
  21: 	}

Replies are listed 'Best First'.
Re: Twiddle
by Hofmator (Curate) on Jul 12, 2001 at 15:03 UTC

    There's also a simple regex solution to that ;-)

    #!/usr/bin/perl -w use strict; print 'What string would you like to twiddle? '; chomp(my $twiddle = <STDIN>); $twiddle =~ /^(.+?)(?{print $1,"\n";})$/; # up chop($twiddle); $twiddle =~ /^(.+)(?{print $1,"\n";})^/; # down

    -- Hofmator

      Amazing! Especially the  ^/ to force backtrack on failure. And of course, the obligatory 1-liner:
      > perl -le'$_=pop;/^(.+?)(?{print$1})$/;/^(.+).(?{print$1})^/' hello h he hel hell hello hell hel he h >

        Thanks all, I'm just learning perl, and that was my first attempt at a program in this language. I'll keep your suggestions in mind. Siggy
Re: Twiddle
by Chady (Priest) on Jul 12, 2001 at 11:06 UTC

    Why do you need all those variables? and did you check if it passes -w and strict?

    here's one that does:

    #!/usr/bin/perl -w use strict; print 'What string would you like to twiddle? '; chomp(my $twiddle = <STDIN>); my $string; my @t = split(//, $twiddle); for (0..$#t) { $string .= shift(@t); print $string, "\n"; # up } while ($string) { chop($string); print $string, "\n"; # and down }

    He who asks will be a fool for five minutes, but he who doesn't ask will remain a fool for life.

    Chady |
Re: Twiddle
by ariels (Curate) on Jul 12, 2001 at 13:48 UTC
    Why chop? Do you really hate substr so much??
    #!/usr/local/bin/perl -w use strict; print "What string would you like to twaddle? "; chomp(my $twiddle = <STDIN>); $l = length $twiddle; # Up... print substr($twiddle,0,$_),"\n" for (1..$l); # Down... print substr($twiddle,0,-$_),"\n" for (1-$l..-1);
    (I also took the liberty of removing the blank line at the end, which I assumed unintentional)
360 degree Twiddle (Re: Twiddle)
by E-Bitch (Pilgrim) on Aug 15, 2001 at 00:26 UTC
    okay, so lets print the thing in a square, and make it readable in several directions (theoretically)
    #!/usr/bin/perl -w use strict; print 'What string would you like to twiddle? '; chomp(my $twiddle = <STDIN>); my $string; my $oldString = ""; my $totallen = length($twiddle); my @t = split(//, $twiddle); for (0..$#t) { $string = shift(@t); print $oldString; for(my $i = 0; $i < (2*($totallen - length($oldString))-1); $i++) { print $string; } print (scalar reverse $oldString); print "\n"; # up $oldString .=$string; } while ($oldString) { chop($oldString); $string = substr($oldString, (length($oldString)-1)); print $oldString; # print the first part o' the string (minus the +last character) for(my $i = 0; $i < (2*($totallen - length($oldString))-1); $i++) { print $string; #print each 'last' character up there enough ti +mes to make the square } print (scalar reverse $oldString);# print the last part o' the str +ing (minus the first character) print "\n"; }
    I know the code is hacky, but it works...
    Tempora Mutantur Nos et Mutamur in Illis
    "The Times are Changed Even as We are Changed in Them"

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlcraft [id://95801]
Approved by root
[TCLion]: some moron put the date like this : Mon Feb 20 09:31:30 2017
[Corion]: 1nickt: Yes, the module sounds promising indeed
[1nickt]: "putting the date in correct order" how?
[Corion]: TCLion: Whee ;)
[TCLion]: need to put like this : 2017-02-20 09:30:53
[1nickt]: That's why I asked if you are using DateTime. It has a large number of supporting modules (the author likes the term 'eco-system') so if you are already creating a DateTime obj from your dates, this module would read in the mnoron-formatted 1s seamlessly
[TCLion]: when I put the date together it looks like : 2017-Feb-24 (month is the problem)
[1nickt]: good luck, then.
[TCLion]: looking at DateTime documentation in monastery now

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (11)
As of 2017-03-23 14:57 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (288 votes). Check out past polls.