Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re: Defactor this code

by japhy (Canon)
on Feb 10, 2007 at 13:27 UTC ( #599354=note: print w/replies, xml ) Need Help??

in reply to Defactor this code

First, your $errorstate variable is named the opposite of what it should be. You set it to 1 when the input is formatted properly! Then, the bottom half of your code can be idiomized using some built-in variables in Perl. And are you sure you want to REMOVE the '#' from lines starting with '#port'? You also do some unnecessary work of checking to see if a regex matches before doing a substitution using that regex.

It turns out you can get rid of $errorstate altogether, and just loop until $sshport has a value.

#!/usr/bin/perl use strict; use warnings; my $sshport = 0; until ($sshport) { print "Please enter SSH port number> "; chomp($sshport = <STDIN>); $sshport = 0 unless $sshport =~ /^[1-9]\d{1,9}$/; } { local $^I = ".old"; # the "in-place edit backup extensio +n" variable local @ARGV = ("sshd_config"); # the files to edit in-place while (<>) { s/^(#?)port .*/$1Port $sshport/i; # this KEEPS the '#' character, # which I think is the correct behavior } }
See perlvar for information about $^I.

Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
How can we ever be the sold short or the cheated, we who for every service have long ago been overpaid? ~~ Meister Eckhart

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://599354]
[Discipulus]: good morning again monks!
[choroba]: Good morning!
[Corion]: I have a rough plan to release an ImageNet classifier in Perl (well, using pretrained data, but still a nice toy)
Discipulus is going mad with the new win10 client.. tried mv Cortana /dev/null but no succes
[Corion]: Ouch - another pretrained set is available, using images from IMDB and Wikipedia. So I expect interesting results for non-PR images where people are pictured that are not made up
[Corion]: Discipulus: Yeah, from my investigations, you can somewhat silence+disable Cortana, but some services of it remain always running unfortunately. What a waste of resources :-/
[Corion]: I hope you had a good weekend still ;)
choroba had a workshop with the band

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (6)
As of 2017-09-25 08:31 GMT
Find Nodes?
    Voting Booth?
    During the recent solar eclipse, I:

    Results (277 votes). Check out past polls.