drusa79 has asked for the wisdom of the Perl Monks concerning the following question:

Hello, I usually work with shell script however , by requirement of one application I need a create a Perl script that calculate the password to access to the routers with a process named complement to 9, something like this: I have an IP : 10.96.3.8 1- Erase the first octet: 96.3.8 2- Complete the octets with less than 3 digits with zeros 096.003.008 3- Subtract each number to 9: 999.999.999 – 096.003.008= 903.996.991 4- Change the order to result and suppress the dots 199699309 Another exaple: The ip: 10.113.125.8 1- 113.125.8 2- 113.125.008 3- 886.874.991 4- 199478688

  • Comment on Calculate dynamic password by complement to 9

Replies are listed 'Best First'.
Re: Calculate dynamic password by complement to 9
by Corion (Patriarch) on Nov 20, 2015 at 08:14 UTC

    So, what code have you already written? How does it fail to meet your requirements? Where do you encounter problems?

Re: Calculate dynamic password by complement to 9
by moocow (Acolyte) on Nov 20, 2015 at 08:51 UTC

    I would also encourage you to read the relevant manpages. http://learn.perl.org/ is also a good resource. Assuming you just want a quick fix, this might do the trick:

    $out = ##-- concatenate result digits join('', ##-- reverse digit order within each octet map {reverse split(//,$_)} ##-- reverse octet order reverse ##-- subtract octet values from 999 map {999-$_} ##-- extract final 3 octets ($ip =~ /^\d+\.(\d+)\.(\d+).(\d+)$/) );

Re: Calculate dynamic password by complement to 9
by Anonymous Monk on Nov 20, 2015 at 08:10 UTC
Re: Calculate dynamic password by complement to 9
by Anonymous Monk on Nov 20, 2015 at 09:05 UTC
    #!/usr/bin/perl -l # http://perlmonks.org/?node_id=1148205 use strict; use warnings; while(<DATA>) { my $pw = reverse map { split //, 999 - $_ } /\.(\d+)/g; print $pw; } # want # 199699309 # 199478688 __DATA__ 10.96.3.8 10.113.125.8