Ik ontdekte een paar dagen geleden twee nieuwe producten van ActiveState : Perl.NET en PerlASPX. En omdat ik Perl wel een aardig taaltje vind
Heb ik het eens gedownload en eens naar gekeken.
Wat is het?
PerlNET voegt een extra taal toe aan Microsofts .NET Hierdoor wordt het dus mogelijk om programma's en libraries in Perl te schrijven en eventueel in andere talen te gebruiken. PerlASPX maakt het embedden van Perl in ASP.NET pagina's mogelijk.
Hoe werkt Perl.NET?
Vrij simpel. Je maakt een normaal perl bestand (.pl) en compileert die met plc (PerL Compiler) naar een .exe:
Ook schijn je gewoon perl modules die al bestaan te kunnen gebruiken (hoewel dat bij mijn eerste poging al mis ging). En Perl modules kun je ook compileren tot .dll.
Een simpel voorbeeldje van het gebruik van WinForms in Perl:
Hoe werkt PerlASPX?
PerlASPX brengt wat voordeeltjes met zich mee. ASP.NET programma's worden bij de eerste uitvoering gecompileerd en gecached, waardoor bij een tweede keer uitvoeren je een gecompileerd programma uitvoerd. Dit in tegenstelling tot Perl via CGI waar code elke keer opnieuw gecompileerd wordt.
Voorbeeld code:
Niet bijzonder schokkend dus.
Waarom zou ik Perl.NET/ASPX gebruiken?
Tja, daar ben ik nog niet helemaal over uit. Perl heeft voor het manipuleren van bestanden en databases veel handige voorzieningen (met name de geweldige reguliere expressies). Hoe deze naar IL code omgezet worden weet ik niet, of dit een beetje efficiënt gebeurt weet ik ook niet.
Verder is het wel zo dat Perl.NET waarschijnlijk de makkelijkst te leren taal is die nu onder .NET draait. Perl lijkt erg op PHP (of beter gezegd, PHP lijkt erg op Perl). Met PerlASPX is het dus ook mogelijk om Perl te embedden in HTML (het oorspronkelijke idee achter PHP).
Wat ik zo snel even gezien heb is dat in Perl.NET Perl en .NET variabelen een beetje gescheiden blijven. In Perl.NET kun je .NET variabeletypen gebruiken (je kan gewoon een Integer object maken). Maar het hoeft niet. Je kan nog steeds alle truukjes met array met dynamische lengtes, hashes en automatische omzetting van het ene type variabele naar het andere ($a = "2"; $a += 2; $a == 4) gebruiken. Maar zoals ik al zei, hoe dit naar IL omgezet wordt? Ik heb geen flauw idee. Ik heb geen benchmarks gedaan.
Links
ActiveState website
Meer informatie over Perl.NET
Download Perl.NET
Meer informatie over PerlASPX
PerlASPX downloaden
[edit: Shit, vraag vergeten
Ehm, wat denken jullie ervan? Is Perl.NET een goede uitbreiding van het .NET platform? Zijn jullie van plan het te gaan gebruiken?
Wat is het?
PerlNET voegt een extra taal toe aan Microsofts .NET Hierdoor wordt het dus mogelijk om programma's en libraries in Perl te schrijven en eventueel in andere talen te gebruiken. PerlASPX maakt het embedden van Perl in ASP.NET pagina's mogelijk.
Hoe werkt Perl.NET?
Vrij simpel. Je maakt een normaal perl bestand (.pl) en compileert die met plc (PerL Compiler) naar een .exe:
code:
1
2
3
4
5
| use namespace "System"; # uses System; in C#
use PerlNET qw(AUTOCALL);
Console->WriteLine("Hello World!"); # Maakt nu gebruik van de .NET library
# Ik heb even getest en
print "Hello World"; # Werkt ook gewoon nog |
Ook schijn je gewoon perl modules die al bestaan te kunnen gebruiken (hoewel dat bij mijn eerste poging al mis ging). En Perl modules kun je ook compileren tot .dll.
Een simpel voorbeeldje van het gebruik van WinForms in Perl:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| package HelloWorldForm;
use strict;
use PerlNET qw(with AUTOCALL);
use namespace "System";
use namespace "System.Windows.Forms";
use namespace "System.Drawing";
=for interface
[extends: Form]
[STAThread]
static void Main();
private field TextBox textBox1;
private void button1_Click(any sender, EventArgs evArgs);
=cut
sub Main {
my $self = HelloWorldForm->new;
Application->Run($self);
}
sub HelloWorldForm {
my $this = shift;
with(my $textBox1 = TextBox->new(),
Text => "Hello Windows Forms World",
Location => Point->new(16, 24),
Size => Size->new(360, 20),
TabIndex => 1);
with(my $button1 = Button->new(),
Text => "Click Me!",
Location => Point->new(256, 64),
Size => Size->new(120, 40),
TabIndex => 2);
$button1->add_Click(EventHandler->new($this, "button1_Click"));
my $height = SystemInformation->CaptionHeight;
with($this,
Text => "Hello Windows Forms World",
AutoScaleBaseSize => Size->new(5, 13),
ClientSize => Size->new(392, 117),
MinimumSize => Size->new(392, int(117 + $height)),
AcceptButton => $button1,
textBox1 => $textBox1);
$this->{Controls}->Add($_) for $textBox1, $button1;
}
sub button1_Click {
my($this, $sender, $evargs) = @_;
MessageBox->Show("Text is: '$this->{textBox1}->{Text}'");
} |
Hoe werkt PerlASPX?
PerlASPX brengt wat voordeeltjes met zich mee. ASP.NET programma's worden bij de eerste uitvoering gecompileerd en gecached, waardoor bij een tweede keer uitvoeren je een gecompileerd programma uitvoerd. Dit in tegenstelling tot Perl via CGI waar code elke keer opnieuw gecompileerd wordt.
Voorbeeld code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <%@ Page Language="perl" %>
<html>
<body>
<h2>ASP-Style Sample</h2>
Static content at the top. <br><br>
<%
use strict;
$this->{Response}->Write("Dynamic content.<br>");
%>
Hello <%= ucfirst("world!") %>
<p>Static content at the bottom.
<p>The time is now <%= substr(localtime, 11, 8) %>.
</body>
</html> |
Niet bijzonder schokkend dus.
Waarom zou ik Perl.NET/ASPX gebruiken?
Tja, daar ben ik nog niet helemaal over uit. Perl heeft voor het manipuleren van bestanden en databases veel handige voorzieningen (met name de geweldige reguliere expressies). Hoe deze naar IL code omgezet worden weet ik niet, of dit een beetje efficiënt gebeurt weet ik ook niet.
Verder is het wel zo dat Perl.NET waarschijnlijk de makkelijkst te leren taal is die nu onder .NET draait. Perl lijkt erg op PHP (of beter gezegd, PHP lijkt erg op Perl). Met PerlASPX is het dus ook mogelijk om Perl te embedden in HTML (het oorspronkelijke idee achter PHP).
Wat ik zo snel even gezien heb is dat in Perl.NET Perl en .NET variabelen een beetje gescheiden blijven. In Perl.NET kun je .NET variabeletypen gebruiken (je kan gewoon een Integer object maken). Maar het hoeft niet. Je kan nog steeds alle truukjes met array met dynamische lengtes, hashes en automatische omzetting van het ene type variabele naar het andere ($a = "2"; $a += 2; $a == 4) gebruiken. Maar zoals ik al zei, hoe dit naar IL omgezet wordt? Ik heb geen flauw idee. Ik heb geen benchmarks gedaan.
Links
ActiveState website
Meer informatie over Perl.NET
Download Perl.NET
Meer informatie over PerlASPX
PerlASPX downloaden
[edit: Shit, vraag vergeten