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

The Monastery Gates

( #131=superdoc: print w/replies, xml ) Need Help??

Donations gladly accepted

If you're new here please read PerlMonks FAQ
and Create a new user.

New Questions
Translate curl to LWP
2 direct replies — Read more / Contribute
by Anonymous Monk
on Nov 13, 2018 at 09:04

    Can you help me translate this Curl command to LWP::UserAgent syntax?

    curl -X POST \ -u "apikey:xxx" \ --header "Content-Type: audio/flac" \ --data-binary @{path_to_file}audio-file.flac \ "https://stream-fra.watsonplatform.net/speech-to-text/api/v1/recognize +"

    The following doesn't work (obviously, as I do not know - as you can see - how to formulate a similar request with LWP

    my $url="https://stream-fra.watsonplatform.net/speech-to-text/api/v1/r +ecognize"; my $apikey="xxx"; open($fh, "<", "audio-file.flac") or die "Can't read file: $!"; my $audio = do { local $/; <$fh> }; close($fh); $ua = LWP::UserAgent->new(); $response = $ua->post( $url, apikey => $apikey, Content_Type => 'audio/flac', Content => $audio );
Unable to make shallow copy of Moo hash ref attribute
2 direct replies — Read more / Contribute
by nysus
on Nov 13, 2018 at 00:45

    This is driving me nuts:

    has 'tree' => ( is => 'ro', isa => sub { {} }, default => sub { { '/' => { children => {} } } } + ); has 'clean_tree' => ( is => 'rw', lazy => 1, predicate => 1, ); sub BUILD { my $s = shift; $s->app->add_hook (Dancer2::Core::Hook->new ( name => 'before_template', code => sub { ... if (!$s->has_clean_tree) { my %tree = %{$s->tree}; # Attempting to make shallow copy he +re. $s->clean_tree(\%tree); } # set active my $tree = $s->clean_tree->{'/'}; foreach my $segment (@segments) { $tree->{children}{$segment}{active} = 1; $tree = $tree->{children}{$segment}; } ... } )); }

    $s->clean_tree is reflecting $s->tree despite trying to make a shallow copy of $s->tree first..

    $PM = "Perl Monk's";
    $MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate Priest Vicar";
    $nysus = $PM . ' ' . $MCF;
    Click here if you love Perl Monks

Perl Mapping (GIS)
1 direct reply — Read more / Contribute
by johnfl68
on Nov 12, 2018 at 22:53

    Hello:

    I looked around, but did not really see any posts of this nature here, so I don't know if anyone here can help. But it doesn't hurt to ask.

    I'm looking for a Perl based mapping (GIS) solution. I need to merge a base map (Natural Earth), and overlay map, and some vector shape files. Nothing too difficult, but may be some different map projections in the merge.

    I see Mapserver, but that doesn't look to be too Perl friendly. Same goes for TillMill. Are there any other Linux (Ubuntu 18.04 server) and Perl friendly options out there that I haven't found yet?

    If anyone has any suggestions, please let me know.

    Thank you as always!

Lincoln Stein's *Networking Programming with Perl* source code
2 direct replies — Read more / Contribute
by ibm1620
on Nov 12, 2018 at 16:47
    This great book, (c) 2001, came with source code that was available at http://www.modperl.com/perl_networking. Sadly, the website doesn't seem to be around anymore. Does anyone know where the source code might have moved? Google is providing no leads...
Screenshot with Perl
2 direct replies — Read more / Contribute
by Perlchaoui
on Nov 12, 2018 at 04:39

    Hello Monastery !

    I would like to get an answer if possible on the below topic. I have to test several url's and i would like to do some screnshot for each of them, once the website is available.

    I can do a screnshot using this code. It's working fine.

    my $filename = "screenshot.png"; $driver->capture_screenshot($filename);

    But as the screenshot action is part of a loop ,when doing that, each screenshot is overriding the previous one because of the same path.

    I searched and i did the following change but this is not working. I can load my script but i recover no screnshot

    my $path = "C:/Users/user1/Documents/TESTPERL"; $driver->capture_screenshot("$path/Website-$url.png");

    The output in CMD is here:

    C:\Users\user1\Documents\TESTPERL>perl TEST7.pl Processing https://www.tricentis.com/ binmode() on closed filehandle $fh at C:/Strawberry/perl/site/lib/Sele +nium/Remote/Driver.pm line 1014. print() on closed filehandle $fh at C:/Strawberry/perl/site/lib/Seleni +um/Remote/Driver.pm line 1015. Processing https://learn.perl.org/examples/spreadsheet_read.html binmode() on closed filehandle $fh at C:/Strawberry/perl/site/lib/Sele +nium/Remote/Driver.pm line 1014. print() on closed filehandle $fh at C:/Strawberry/perl/site/lib/Seleni +um/Remote/Driver.pm line 1015. Processing https://github.com/mozilla/geckodriver/releases binmode() on closed filehandle $fh at C:/Strawberry/perl/site/lib/Sele +nium/Remote/Driver.pm line 1014. print() on closed filehandle $fh at C:/Strawberry/perl/site/lib/Seleni +um/Remote/Driver.pm line 1015.
    And here the main code:
    #!/usr/bin/perl use strict; use warnings; use Test::More; #use Test::Time; use Selenium::Remote::Driver; use Selenium::Remote::WebElement; use Selenium::Remote::WDKeys; use Spreadsheet::Read; use Text::CSV_XS; my $driver = Selenium::Remote::Driver->new( 'remote_server_addr' => 'localhost', 'browser_name' => 'chrome', 'port' => '4444', ); my $excel = ReadData("TEST.csv"); my $row = 1; my $url = $excel->[1]{'A'.$row}; while ($url){ # do something with url process($url); ++$row; $url = $excel->[1]{'A'.$row}; } sub process { my ($url) = @_; print "Processing $url\n"; $driver->get($url); $driver->maximize_window(); $driver->pause(2000); #my $filename = "screenshot.png"; #$driver->capture_screenshot($filename); my $path = "C:/Users/user1/Documents/TESTPERL"; $driver->capture_screenshot("$path/Website-$url.png"); $driver->pause(2000); }

    I already put this in a post but it was a remark part of another topic.

    Can someone help on this ?

    Many thanks

Multiple CPAN distributions under the same git repository?
2 direct replies — Read more / Contribute
by Dallaylaen
on Nov 12, 2018 at 01:54

    Hello dear esteemed monks,

    Suppose I have several similar and small modules (actually plugins for another module) and I'm looking for a way to keep them in git.

    The plugins are not expected to be changed often. When they are, however, many of them may require an almost identical change (e.g. the main module adds a new feature or fixes a bug).

    So what are the ways to achieve it?

    • (1) Just make a repository per module. Pros: it's simple. Cons: lots of jumping through hoops in a mass update situation.
    • (2) Make a package named My::Module::Plugins and bundle them all. Pros: it's simple. Cons: I want my users to be able to pick which dependencies they need.
    • (3)Have several directories in one repository. Pros: Can modify and build them at once. No need to keep an eye on many repos. Cons: it's complicated. The directory structure itself needs maintenance.

    What are the examples on CPAN? So far I've been able to peek at Map::Tube::* which uses the first approach. But maybe there are others? What do they use?

    Thank you.

grep surprise
5 direct replies — Read more / Contribute
by morgon
on Nov 11, 2018 at 16:30
    Hi,

    I usually just grep through arrays, but recently I was not looking for an array-element, but for the index of an array-element, so I tried this:

    use strict; my @array=(1,2); my $i1 = grep { $array[$_] == 1 } (0..$#array); my $i2 = grep { $array[$_] == 2 } (0..$#array); my $i3 = grep { $array[$_] == 3 } (0..$#array); print "<$i1> <$i2> <i3>\n";
    I would have expected an output of "<0> <1> <>" (as the index where the value is 1 is 0, the index where the value is 2 is 1 and there is no index with a value of 3), but instead I get "<1> <1> <0>".

    Why is that?

'my' inside /(?{...})/ doesn't refresh a hash variable in 5.14
1 direct reply — Read more / Contribute
by rsFalse
on Nov 11, 2018 at 11:33
    Hello.

    I was playing with '/(?{ ... })/' and have found different 'my' behaviour inside eval-block, in 5.18 vs 5.14.
    In the code below, I am playing with the task: "To find 2 numbers (from 0 to 2), which can not be the same, their sum is equal to 2, and the second one is bigger than first one".
    use warnings; use strict; $\ = $/; my $A = 2; my $_0to2 = join '', 0 .. 2; $_ = join '=', ( $_0to2 ) x 2; print "\$_:[$_]"; print /^ \d*(\d)\d* = \d*(\d)\d* (?(?{ my %h; map $h{ $_ } ++, $1, $2; 2 == keys %h }) | (* +FAIL) ) (?(?{ $1 < $2 }) | (*FAIL) ) (?(?{ my $sum = $1 + $2; $sum == $A }) | (*FAIL) ) $/x ? "MATCHED: \$1:[$1], \$2:[$2]" : "NOT_MATCHED" ;
    Here I used conditionals "(?(condition)yes-pattern|no-pattern)" (perlre).

    5.14.4 OUTPUT:
    $_:[012=012] NOT_MATCHED
    5.18.2 OUTPUT:
    $_:[012=012] MATCHED: $1:[0], $2:[2]
    I haven't understand where is the different behaviour, because I haven't received any warnings by 'use warnings;'.
    I found the difference when inserted 'print 0 + keys %h;' inside eval-block with hash (code line below). It printed many '3' (5.14) vs not more than '2' (5.18). It seems that 'my %h;' haven't refreshed a hash. I guess it was known behaviour. When have it changed?
    Upd.:
    (?(?{ my %h; map $h{ $_ } ++, $1, $2; print 0 + keys %h; 2 == keys %h +}) | (*FAIL) )
    Upd.2:Have swapped versions to correct
Splitting program into modules
7 direct replies — Read more / Contribute
by lis128
on Nov 10, 2018 at 17:14
    Dear Monks,

    at my job i am last one who understands and worships spiritual Perl power.
    Because of that i was sent to dungeon full of hash pounds and dollar signs, named Connetor.pl, to alter it's way of working.

    I was given 14k lines of wise, full of vaild and even preety, but not self-documenting Perl code. sub definitions are mixed with "main" code and sub calls, database routine is ending just to call curl on the main "thread" and after which there's another sub defined.
    Obviously it's not helping to understand what, or how, this code is relly doing, so i decided to split it into functional packages

    So, as i did not found any more elegant way to include "reusable" code, i decided to group subs accessing database into Database.pm, these interacting with API for data input ended in API.pm and so on, leaving main to just call predeclared subs and decide either to INSERT them into databse or print.

    Main package had been shrinked into circa 300 lines and i've gained much visibility. When i wanted to proceed to unit tests and documenting every sub functionality (like: this function CONSUMES scalar with URL, PRODUCES array with "img scr" tags) i found that my packaging solution might not be wisest thing done there.
    Of course i didn't foreseen that namespaces can be an issue here, and they were

    main calls custom wrapper to eventually create instance of DBI object and holds its ref in $main::sql.
    sub sql_connect embedded into Database.pm (Databae::sql_connect to be precise) tries to call "connect" method on $sql, but API.pm's methods albo uses some $sql methods
    and there's alot of shared variables like this.
    Before my modularization attempt everything worked, now i am forced to replace all "my"s into "our"s definitions in main in order to grant access to these variables by modules.

    also changing all $variable in modules to $main::variable syntax and constanlty growing out @EXPORT = qw (...); gave me that strage feeling like trying to leave dungeon leads me to catacombs.

    what am i missing here? How do properly split this code into logical chunks of separate files, but keeping namespace "main"?

    ANY ideas will be appreciated.
    my main goal is to document code, understand it's flow and based on that create another functionality

Pattern matching
4 direct replies — Read more / Contribute
by nursyza
on Nov 10, 2018 at 03:38

    I'm a newbie in Perl. I need some help with this coding.

    MODULE C17 (N1, N2, N3, N6, N7, N22, N23);

    Based on the line above, I want to program so that it will print out only the name "MODULE C17".

    Here is the coding that I tried but it prints out the whole line.

    my $MODULE_NAME = $_; if (defined($MODULE_NAME) && ($MODULE_NAME =~ /MODULE (.*);/)) { my $module_name = $1; print "Module name = $module_name\n"; }
Why isn't this code thread-safe? (Is "require" thread-safe??)
1 direct reply — Read more / Contribute
by vr
on Nov 09, 2018 at 13:35

    I was running a simple task, almost one-shot, throw-away script, therefore using basic tools. Because there were thousands of files to process, I decided to parallelize. With small test-suite, and "no-op", SSCCE code, sometimes output is OK:

    use strict; use warnings; use feature 'say'; use threads; use Thread::Queue; use CAM::PDF; use File::Find; my $q = Thread::Queue-> new; my @gang = map async( sub { while ( defined( my $f = $q-> dequeue )) { say threads-> tid, ' ', $f; my $pdf = CAM::PDF-> new( $f ) or die; } }), 1 .. 2; find( sub { -f and /\.pdf$/i and $q-> enqueue( $File::Find::name ) }, './1' ); $q-> end; $_-> join for @gang; __END__ 1 ./1/1/106/10627.pdf 2 ./1/1/107/10703.pdf 2 ./1/1/186/18673.pdf 1 ./1/1/209/20946.pdf 2 ./1/1/26/2656.pdf 1 ./1/1/33/3384.pdf 2 ./1/1/57/5742.pdf 1 ./1/1/58/5869.pdf 2 ./1/1/63/6395.pdf 1 ./1/1/70/7099.pdf 1 ./1/1/74/7466.pdf

    But sometimes not (example 1, one worker dead):

    1 ./1/1/106/10627.pdf 2 ./1/1/107/10703.pdf Thread 2 terminated abnormally: *****Undefined subroutine &Compress::Z +lib::Parse Parameters called at C:/strawberry-perl-5.28.0.1-32bit-PDL/perl/lib/Co +mpress/Zli b.pm line 366. 1 ./1/1/186/18673.pdf 1 ./1/1/209/20946.pdf 1 ./1/1/26/2656.pdf 1 ./1/1/33/3384.pdf 1 ./1/1/57/5742.pdf 1 ./1/1/58/5869.pdf 1 ./1/1/63/6395.pdf 1 ./1/1/70/7099.pdf 1 ./1/1/74/7466.pdf

    Example 2 (both workers dead, but for different reason):

    1 ./1/1/106/10627.pdf 2 ./1/1/107/10703.pdf Thread 2 terminated abnormally: *****Global symbol "@ISA" requires exp +licit pack age name (did you forget to declare "my @ISA"?) at C:/strawberry-perl- +5.28.0.1-3 2bit-PDL/perl/site/lib/Text/PDF/Filter.pm line 342. Global symbol "@basedict" requires explicit package name (did you forg +et to decl are "my @basedict"?) at C:/strawberry-perl-5.28.0.1-32bit-PDL/perl/sit +e/lib/Text /PDF/Filter.pm line 343. Global symbol "@basedict" requires explicit package name (did you forg +et to decl are "my @basedict"?) at C:/strawberry-perl-5.28.0.1-32bit-PDL/perl/sit +e/lib/Text /PDF/Filter.pm line 351. Global symbol "@basedict" requires explicit package name (did you forg +et to decl are "my @basedict"?) at C:/strawberry-perl-5.28.0.1-32bit-PDL/perl/sit +e/lib/Text /PDF/Filter.pm line 374. Compilation failed in require at C:/strawberry-perl-5.28.0.1-32bit-PDL +/perl/site /lib/CAM/PDF.pm line 5608. Thread 1 terminated abnormally: *****Global symbol "@ISA" requires exp +licit pack age name (did you forget to declare "my @ISA"?) at C:/strawberry-perl- +5.28.0.1-3 2bit-PDL/perl/site/lib/Text/PDF/Filter.pm line 342. Global symbol "@basedict" requires explicit package name (did you forg +et to decl are "my @basedict"?) at C:/strawberry-perl-5.28.0.1-32bit-PDL/perl/sit +e/lib/Text /PDF/Filter.pm line 343. Global symbol "@basedict" requires explicit package name (did you forg +et to decl are "my @basedict"?) at C:/strawberry-perl-5.28.0.1-32bit-PDL/perl/sit +e/lib/Text /PDF/Filter.pm line 351. Global symbol "@basedict" requires explicit package name (did you forg +et to decl are "my @basedict"?) at C:/strawberry-perl-5.28.0.1-32bit-PDL/perl/sit +e/lib/Text /PDF/Filter.pm line 374. Compilation failed in require at C:/strawberry-perl-5.28.0.1-32bit-PDL +/perl/site /lib/CAM/PDF.pm line 5608.

    Actually, CAM::PDF, "as is", is coded to issue a single warning (large source file!), but with filter undefined it becomes somewhat broken and useless and floods terminal with further thousands of warnings, therefore I prepended that line with

    die '*****' . $@;

    so the output is as shown above. My impression is that threads are trying to read the same source files -- CAM::PDF requires Text::PDF::Filter, which requires Compress::Zlib, and hence some sort of race condition happens and failed (partial) reading from file.

    Is that even possible? I thought that files can be opened for reading safely by different processes, and OS would "arbitrate" "parallel" access to them. Is it not the case in general, or with require only?

    If it's not the case, then is it a common knowledge (which I missed) that main thread should take care to "pre-require" all modules possibly needed by several workers before spawning them?

    (Note, if someone wants to run tests: PDFs are of "compressed xref table" variety (they are client's files I won't share), and with other (simple xref table) files the sub containing line 5608 won't be called, i.e. Text::PDF::Filter won't be required, on simply reading a file).

One Liner
2 direct replies — Read more / Contribute
by dirtdog
on Nov 09, 2018 at 13:15

    Hi Monks

    I have a small script that works, but it would be ideal if I could convert it to a one-liner. The objective is to return the unique values in the {108: tag. So in the example provided 8480963411 and 8481963413 would be returned and stored as 2 separate values in a Shell variable. Not sure it can be done, but thought I'd check with the Monks.

    #!/usr/bin/env perl use strict; use warnings; $/ = "{S:{CON:}}"; while (<DATA>) { if ( /\{108\:(\w+)\}\}/ ) { print "$1\n"; } } __DATA__ {1:6392495900}{4:{177:1807300738}{451:1}{405:K22005}{108:8480963411}}{ +1:6392495900}{2:IVSN}{3:{108:8480963411}}{5:{MAC:00000000}{CHK:9F11}} +{S:{CON:}}${1:6392495903}{4:{177:1807300738}{451:1}{405:K22005}{108:8 +481963413}}{1:6392495903}{2:IVSN}{3:{108:8481963413}}{5:{MAC:00000000 +}{CHK:12846}}{S:{CON:}}

    I appreciate any and all help

    Thanks

New Cool Uses for Perl
Google API Browser
No replies — Read more | Post response
by localshop
on Nov 12, 2018 at 09:42

    As I continue my pilgrimage to becoming passably proficient with Mojo and Google Cloud Services I have been tinkering away with WebService::GoogleAPI::Client and as a working example I was reasonably happy with the ease with which I could produce a basic Google API Explorer that presents the method and parameters of all the Google Discoverable API Endpoints. This is proving a handy starting point to constructing working examples accessing the APIS.

    I plan to extend this to firstly include required scopes, then provide OpenAPI YAML and perhaps ultimately replicate many of the features of Google's API Explorer.

    You can see the Mojo Application running as a Hypnotoad socket served application under CPANEL/WHM hosted environment at https://pscott.com.au.

    Today I'm working on the Google Drive API Example available in the Github Repo as a demo of an alternative approach to using a dedicated CPAN module such as the just released Net::Google::Drive

    If anybody has any interesting use cases requiring access to Google Cloud Services let me know. I'm trying to add a new example every few days.

Achievements Steaming ahead
No replies — Read more | Post response
by GrandFather
on Nov 12, 2018 at 01:09

    I play a bit of Civ V. Like many games these days I downloaded it using Steam and one of the "features" of the system is that Steam keeps track of various in game achievements. So, silly me, I've been sucked into playing the "get the achievements" meta game.

    Which is all very fine, but Steam doesn't do a great job of showing you the achievements. It doesn't seem able to sort them in the order that they have been achieved so sometimes it can be hard to know if you got that last thing or not. So, Perl to the rescue! The following script parses the Copy & Pasted achievements list from the Steam page and sorts them, first list the "not yet achieved" entries, then the achieved items sorted by the order that they were achieved.

    use strict; use warnings; my %monthOrd = ( Jan => 1, Feb => 2, Mar => 3, Apr => 4, May => 5, Jun => 6, Jul => 7, Aug => 8, Sep => 9, Oct => 10, Nov => 11, Dec => 12, ); my @records = grep {/\n/ and /[^\n]/} do {local $/ = "\n\n"; <DATA>}; s/^\n+|\n$//gs for @records; for my $record (@records) { my @lines = split "\n", $record; $lines[0] //= ''; my ($day, $month, $year, $time) = $lines[0] =~ /(\d+)\s+(\w+)(?:, +(\d+))?\s+\@\s+(\S+)/; if(defined $month && exists $monthOrd{$month}) { $year ||= 2018; $lines[0] = sprintf "%04d %2d %2d %7s", $year, $monthOrd{$mont +h}, $day, $time; } else { unshift @lines, ''; } $record = \@lines; } # Sort records by not achieved first. Remove blank lines from records @records = map {$_ = [grep {$_} @$_]; $_} sort {$a->[0] cmp $b->[0]} @ +records; print join "\n", @$_, '', '' for @records; __DATA__ Unlocked 18 Feb, 2016 @ 11:39pm First in the Hearts of Your Countrymen Beat the game on any difficulty setting as Washington. Unlocked 2 Jun, 2016 @ 7:48pm Video et Taceo Beat the game on any difficulty setting as Elizabeth. Unlocked 18 Nov, 2017 @ 4:57pm Vivre La Revolution Beat the game on any difficulty setting as Napoleon. Unlocked 25 Apr, 2016 @ 9:44am Blood and Iron Beat the game on any difficulty setting as Bismarck. Red Badge of Courage Win the Civil War scenario on Deity. Pickett's Recharge Capture Gettysburg with a Confederate Infantry unit possessing the Geo +rge Pickett promotion. Sheridan's Valley Campaign As Union, control Winchester, Front Royal, Harrisonburg, Staunton, and + Lynchburg.

    Prints:

    Red Badge of Courage Win the Civil War scenario on Deity. Pickett's Recharge Capture Gettysburg with a Confederate Infantry unit possessing the Geo +rge Pickett promotion. Sheridan's Valley Campaign As Union, control Winchester, Front Royal, Harrisonburg, Staunton, and + Lynchburg. 2016 2 18 11:39pm First in the Hearts of Your Countrymen Beat the game on any difficulty setting as Washington. 2016 4 25 9:44am Blood and Iron Beat the game on any difficulty setting as Bismarck. 2016 6 2 7:48pm Video et Taceo Beat the game on any difficulty setting as Elizabeth. 2017 11 18 4:57pm Vivre La Revolution Beat the game on any difficulty setting as Napoleon.
    Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond
New Obfuscated Code
die if lie! fun with Win32
1 direct reply — Read more / Contribute
by Discipulus
on Nov 12, 2018 at 05:27
    Hello nuns and monks!

    I'm not an obfusctor, but as Win32 is obfuscated per se i present you this little lie/truth game

    use Win32; exit unless @}; $ms = \&Win32::GetSystemMet +rics if $^O; END{ exit if @};while(<DATA>) { s/\s//g ; push @} , jo +in '', map {chr (($^O =~ s/\D+//r)+$_)}( $_ =~ /\d{2}/g ) } seek DA +TA, 0, 0; ; $s.=$_ for<DATA>;die if !eval $s; system('cls'); print $ +^O,' ', map {uc $_} substr($} [4], 0, 1 ), substr ($}[0] , 7 , 1), sub +str( $}[5] ,4,1), substr ($}[8],1,1), $/;} map{die 'lie!' unless($$_[1 +]->($$_[2] )?6:7 )== Win32::MsgBox($}[$$_ [0]] . "?", 4, $0); }[0, $ms +,75], [1, $ms, 91], [2, $ms, 23],[3,$ms, 0x2004], [4,$ms, 67],[5, $ms +,0x2003]; map { print $}[$$_[0]]. "?\n"; <STDIN> eq $$_[1] ( $$_[2] ). +"\n" or die'lie!'}[6,$ms,80],[7,$ms,0], [8,$ms,1]; eval '#!perl' unle +ss $^O; __DATA__ 777 9 8 5 8 36 9 00 7265 830 08 669 82 847 36 765 760 08 7726 +96 976 77 79 858 36 90 0726 5830072798 27390 7978 84 65 76 00 8772 69 +69 76 7 7 7 98583 69 0 0 66 8 58 4847 97 8830 0658 26900 83 876 58080 + 6968 73 8 30 08 4 726 90 080 670 073 78 006 8 79 67 756 96 80 077 796 + 869 74 85 8 3 84006 67 9798 4007378 007 065 7376 1383 6570 69 007779 +6869 89 798 500 808 5840 08 0670 079 78 0 08 37 6 6 58 4 69 0 07 779 6 +869 72798 70077 65788 9007 77 97873 84798283 0068790089798 500726 58 +669 87726584078 3008472690087736884 720079700070738 28384008367 826969 +78 8772658407830084726900726973717 284007970007073 8283840083678269697 +8

    L*

    There are no rules, there are no thumbs..
    Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.
Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2018-11-13 20:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My code is most likely broken because:
















    Results (158 votes). Check out past polls.

    Notices?