in reply to Re^2: appending to html at beginning (don't use CGI) in thread appending to html at beginning
Did you look at the op? Op wrote and ran a cgi program. But is hand parsing...reinventing the cgi.pm module-- cgi module is best for doing that; every time you quote that when if doesnt apply is trolling
Re^4: appending to html at beginning ( use CGI for parsing cgi)
by Limbomusic (Acolyte) on Feb 03, 2017 at 13:59 UTC
|
Hey :-)
Wow Ok, Got a lot to learn.. Didnt know that Matts guestbook script was such risky business... (altho my webserver is very dear to me - its just a personal playground, and I take a backup often, besides - I think the hiawatha webserver should be pretty secure) - But wow - many interesting suggestions - "swapping" file content with a temp text file seems actually quite understandable - but then - wow - the idea with a separate text file just listing all the stories is also a gem - because then one could - have links to a html file with all the different $names of peoples stories - so instead of just all stories being listed - one could click on someones name and their story would come up, that would be very cool.
Anonymous Monk: yeah, probably better to just start from scratch listing all the $variables - eh stupid question, why do you all put "my" in front of the scalars? | [reply] |
|
stupid question, why do you all put "my" in front of the scalars?
Not stupid at all - it is to limit the scope. This is a very important concept in computing generally and is not just limited to Perl. However, you could do an awful lot worse than read the canonical article by Dominus: Coping with Scoping which deals with the whole issue of variable declaration in Perl. It goes into more depth that you'll need just now but it won't steer you wrong.
| [reply] |
Re^4: appending to html at beginning (don't use CGI)
by haukex (Archbishop) on Feb 03, 2017 at 16:46 UTC
|
Hi Anonymous,
cgi module is best for doing that
Plack, Catalyst, Dancer2, Mojolicious, and more... (Update: As hippo pointed out, CGI::Minimal, CGI::Lite, or CGI::Simple)
- versus -
A module that is no longer recommended by its own documentation, and was removed from Perl's core. I didn't even say the module was summarily bad, just that it shouldn't be recommended for newcomers/new developments.
You're using some strange definitions of "best" and "trolling" ;-P
Regards, -- Hauke D
| [reply] |
|
| [reply] |
|
I completely agree with this sentiment. Also, it is not the case that CGI.pm is the only pure CGI game in town. I would recommend one of the smaller modules which does not come with the baggage of HTML-generating code as a better place to start. Take your pick from:
CGI::Minimal,
CGI::Lite,
CGI::Simple or even the old
CGI::Thin.
Any of these would be a gentler introduction than Plack and will be much faster to run in a traditional CGI environment (of which plenty still exist, BTW).
| [reply] |
|
|
|
|
Hi Corion,
the cliff that are HTTP frameworks
I see your point, but I have to disagree that all of the alternatives to CGI are so much more "worse". If we are talking about full-blown Catalyst, Dancer2, or Mojolicious apps, then yes, I would tend to agree with you that they might be a little too powerful and the learning curve might be a bit too steep for a newcomer. However, IMO plain Plack and Mojolicious::Lite are quite approachable. If someone learns only one toolbox for writing server-side scripts, I personally don't think CGI should be it, but instead one of the two aforementioned modules.
Regards, -- Hauke D
| [reply] |
|
#!/usr/bin/env plackup
use strict;
use warnings;
use Data::Dumper;
use Plack::Request;
use Plack::Response;
my $app = sub {
my $req = Plack::Request->new( shift );
my $q = $req->parameters;
my $navn = $q->{navn};
my $navn2 = $q->{navn2};
my $adj1 = $q->{adj1};
my $bann1 = $q->{bann1};
my $res = Plack::Response->new( 200 );
$res->body( $readystory );
$res->finalize;
};
VERSUS
use CGI ();
my $q = CGI->new;
my $navn = $q->param('navn');
my $navn2 = $q->param('navn2');
my $adj1 = $q->param('adj1');
my $bann1 = $q->param('bann1');
...
print $q->header, $readystory;
Furthermore:
vagrant@localhost ~ $ cpanm --notest Plack
--> Working on Plack
Fetching http://www.cpan.org/authors/id/M/MI/MIYAGAWA/Plack-1.0043.tar
+.gz ... OK
==> Found dependencies: File::ShareDir::Install
--> Working on File::ShareDir::Install
Fetching http://www.cpan.org/authors/id/E/ET/ETHER/File-ShareDir-Insta
+ll-0.11.tar.gz ... OK
==> Found dependencies: Module::Build::Tiny
--> Working on Module::Build::Tiny
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/Module-Build-Tiny-0
+.039.tar.gz ... OK
==> Found dependencies: ExtUtils::Config, ExtUtils::Helpers, ExtUtils:
+:InstallPaths
--> Working on ExtUtils::Config
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/ExtUtils-Config-0.0
+08.tar.gz ... OK
Configuring ExtUtils-Config-0.008 ... OK
Building ExtUtils-Config-0.008 ... OK
Successfully installed ExtUtils-Config-0.008
--> Working on ExtUtils::Helpers
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/ExtUtils-Helpers-0.
+026.tar.gz ... OK
Configuring ExtUtils-Helpers-0.026 ... OK
Building ExtUtils-Helpers-0.026 ... OK
Successfully installed ExtUtils-Helpers-0.026
--> Working on ExtUtils::InstallPaths
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/ExtUtils-InstallPat
+hs-0.011.tar.gz ... OK
Configuring ExtUtils-InstallPaths-0.011 ... OK
Building ExtUtils-InstallPaths-0.011 ... OK
Successfully installed ExtUtils-InstallPaths-0.011
Configuring Module-Build-Tiny-0.039 ... OK
Building Module-Build-Tiny-0.039 ... OK
Successfully installed Module-Build-Tiny-0.039
Configuring File-ShareDir-Install-0.11 ... OK
Building File-ShareDir-Install-0.11 ... OK
Successfully installed File-ShareDir-Install-0.11
Configuring Plack-1.0043 ... OK
==> Found dependencies: File::ShareDir, Cookie::Baker, Test::TCP, File
+sys::Notify::Simple, HTTP::Entity::Parser, Stream::Buffered, Apache::
+LogFormat::Compiler, Devel::StackTrace::AsHTML, Hash::MultiValue, WWW
+::Form::UrlEncoded, HTTP::Headers::Fast
--> Working on File::ShareDir
Fetching http://www.cpan.org/authors/id/R/RE/REHSACK/File-ShareDir-1.1
+02.tar.gz ... OK
Configuring File-ShareDir-1.102 ... OK
==> Found dependencies: Class::Inspector
--> Working on Class::Inspector
Fetching http://www.cpan.org/authors/id/P/PL/PLICEASE/Class-Inspector-
+1.31.tar.gz ... OK
Configuring Class-Inspector-1.31 ... OK
Building Class-Inspector-1.31 ... OK
Successfully installed Class-Inspector-1.31
Building File-ShareDir-1.102 ... OK
Successfully installed File-ShareDir-1.102
--> Working on Cookie::Baker
Fetching http://www.cpan.org/authors/id/K/KA/KAZEBURO/Cookie-Baker-0.0
+7.tar.gz ... OK
Configuring Cookie-Baker-0.07 ... OK
Building Cookie-Baker-0.07 ... OK
Successfully installed Cookie-Baker-0.07
--> Working on Test::TCP
Fetching http://www.cpan.org/authors/id/S/SY/SYOHEX/Test-TCP-2.17.tar.
+gz ... OK
Configuring Test-TCP-2.17 ... OK
==> Found dependencies: Test::SharedFork
--> Working on Test::SharedFork
Fetching http://www.cpan.org/authors/id/E/EX/EXODIST/Test-SharedFork-0
+.35.tar.gz ... OK
Configuring Test-SharedFork-0.35 ... OK
Building Test-SharedFork-0.35 ... OK
Successfully installed Test-SharedFork-0.35
Building Test-TCP-2.17 ... OK
Successfully installed Test-TCP-2.17
--> Working on Filesys::Notify::Simple
Fetching http://www.cpan.org/authors/id/M/MI/MIYAGAWA/Filesys-Notify-S
+imple-0.12.tar.gz ... OK
Configuring Filesys-Notify-Simple-0.12 ... OK
Building Filesys-Notify-Simple-0.12 ... OK
Successfully installed Filesys-Notify-Simple-0.12
--> Working on HTTP::Entity::Parser
Fetching http://www.cpan.org/authors/id/K/KA/KAZEBURO/HTTP-Entity-Pars
+er-0.19.tar.gz ... OK
Configuring HTTP-Entity-Parser-0.19 ... OK
==> Found dependencies: Hash::MultiValue, WWW::Form::UrlEncoded, HTTP:
+:MultiPartParser, Stream::Buffered, JSON::MaybeXS
--> Working on Hash::MultiValue
Fetching http://www.cpan.org/authors/id/A/AR/ARISTOTLE/Hash-MultiValue
+-0.16.tar.gz ... OK
Configuring Hash-MultiValue-0.16 ... OK
Building Hash-MultiValue-0.16 ... OK
Successfully installed Hash-MultiValue-0.16
--> Working on WWW::Form::UrlEncoded
Fetching http://www.cpan.org/authors/id/K/KA/KAZEBURO/WWW-Form-UrlEnco
+ded-0.24.tar.gz ... OK
Configuring WWW-Form-UrlEncoded-0.24 ... OK
Building WWW-Form-UrlEncoded-0.24 ... OK
Successfully installed WWW-Form-UrlEncoded-0.24
--> Working on HTTP::MultiPartParser
Fetching http://www.cpan.org/authors/id/C/CH/CHANSEN/HTTP-MultiPartPar
+ser-0.01.tar.gz ... OK
Configuring HTTP-MultiPartParser-0.01 ... OK
Building HTTP-MultiPartParser-0.01 ... OK
Successfully installed HTTP-MultiPartParser-0.01
--> Working on Stream::Buffered
Fetching http://www.cpan.org/authors/id/D/DO/DOY/Stream-Buffered-0.03.
+tar.gz ... OK
Configuring Stream-Buffered-0.03 ... OK
Building Stream-Buffered-0.03 ... OK
Successfully installed Stream-Buffered-0.03
--> Working on JSON::MaybeXS
Fetching http://www.cpan.org/authors/id/E/ET/ETHER/JSON-MaybeXS-1.0030
+09.tar.gz ... OK
Configuring JSON-MaybeXS-1.003009 ... OK
==> Found dependencies: Cpanel::JSON::XS
--> Working on Cpanel::JSON::XS
Fetching http://www.cpan.org/authors/id/R/RU/RURBAN/Cpanel-JSON-XS-3.0
+227.tar.gz ... OK
Configuring Cpanel-JSON-XS-3.0227 ... OK
Building Cpanel-JSON-XS-3.0227 ... OK
Successfully installed Cpanel-JSON-XS-3.0227
Building JSON-MaybeXS-1.003009 ... OK
Successfully installed JSON-MaybeXS-1.003009
Building HTTP-Entity-Parser-0.19 ... OK
Successfully installed HTTP-Entity-Parser-0.19
--> Working on Apache::LogFormat::Compiler
Fetching http://www.cpan.org/authors/id/K/KA/KAZEBURO/Apache-LogFormat
+-Compiler-0.33.tar.gz ... OK
Configuring Apache-LogFormat-Compiler-0.33 ... OK
==> Found dependencies: POSIX::strftime::Compiler
--> Working on POSIX::strftime::Compiler
Fetching http://www.cpan.org/authors/id/K/KA/KAZEBURO/POSIX-strftime-C
+ompiler-0.42.tar.gz ... OK
Configuring POSIX-strftime-Compiler-0.42 ... OK
Building POSIX-strftime-Compiler-0.42 ... OK
Successfully installed POSIX-strftime-Compiler-0.42
Building Apache-LogFormat-Compiler-0.33 ... OK
Successfully installed Apache-LogFormat-Compiler-0.33
--> Working on Devel::StackTrace::AsHTML
Fetching http://www.cpan.org/authors/id/M/MI/MIYAGAWA/Devel-StackTrace
+-AsHTML-0.15.tar.gz ... OK
Configuring Devel-StackTrace-AsHTML-0.15 ... OK
Building Devel-StackTrace-AsHTML-0.15 ... OK
Successfully installed Devel-StackTrace-AsHTML-0.15
--> Working on HTTP::Headers::Fast
Fetching http://www.cpan.org/authors/id/T/TO/TOKUHIROM/HTTP-Headers-Fa
+st-0.21.tar.gz ... OK
Configuring HTTP-Headers-Fast-0.21 ... OK
Building HTTP-Headers-Fast-0.21 ... OK
Successfully installed HTTP-Headers-Fast-0.21
Building Plack-1.0043 ... OK
Successfully installed Plack-1.0043
23 distributions installed
| [reply] [d/l] [select] |
|
Plack, Catalyst, Dancer2, Mojolicious, and more...
All of those run slower then CGI.pm under CGI -- thats because they do a lot more than parse CGI parameters, have more dependencies, have bigger APIs ...
(Update: As hippo pointed out, CGI::Minimal, CGI::Lite, or CGI::Simple) A module that is no longer recommended by its own documentation, and was removed from Perl's core. I didn't even say the module was summarily bad, just that it shouldn't be recommended for newcomers/new developments.
By that logic, why would you even mention those other CGI::... modules? They were never in the perl core
and they're just lesser imitations of the CGI.pm module
You're using some strange definitions of "best" and "trolling" ;-P
Look, its nice you've got enthusiasm for participation,
but you should avoid railing against things, esp by copy/paste,
thats just trolling
Code over propaganda
| [reply] |
|
Hi Anonymous,
By that logic, why would you even mention those other CGI::... modules?
Simply because they're not deprecated, and don't have substantial portions of their functionality declared unmaintained. I just mentioned the removal from the core to underline that.
And just in case it isn't clear yet, I have nothing against CGI (the protocol / environment), the point I was making is that CGI.pm (the module) shouldn't be recommended to newcomers or new developments, and that there are better alternatives.
they're just lesser imitations ... you should avoid railing against things
Right.
thats just trolling
... says the anonymous post with mild insults and no substantial evidence or arguments.
Feel free to register an account and build a reputation on which a respectful discussion could be based. Or, continue posting anonymously, but remember that each AM post needs to stand on its own, and each post has to fight a small uphill battle.
Regards, -- Hauke D
| [reply] |
|
|