perl firefox add-on - perl

is it possible to write firefox addon with perl and if yes could some one point to some articles materials about this subject ?

I don't know how feasible building a Firefox addon in Perl is, but here are a few links that might get you started.
MozRepl (interact with Firefox from Perl via the MozRepl addon)
WWW::Mechanize::Firefox (use Firefox as WWW::Mechanize)
XUL::Gui (my own module that lets you build gui applications in Perl that are rendered with Firefox)
I might be able to answer more detailed questions if you have them.

Firefox is largely built using four technologies: XUL, CSS, JavaScript, and XPCOM. Extensions are also built using these four technologies.
XPCOM is a cross platform component object model, similar to Microsoft COM. It has multiple language bindings, letting the XPCOM components be used and implemented in JavaScript, Java, and Python in addition to C++.(so no perl)
To write a extension you have to comunicate with the xpcom this is not possible from perl.

Related

Python based browser plug-in?

Is there any good browser plugin that has Python as its primary scripting language. It is ok even if it has very minimal graphical abilities like just taking inputs through HTML forms or parameters and rendering text as output.
One option is running Python on server side. But unfortunately, I am not allowed to install any Python server side framework.
EDIT
It seems that Silverlight can use IronPython as its language. But any other more cross platform solutions are still welcome.
You can look at the PyXPCOM add-on to Firefox. It seems to do what you're looking for.

Should I be building GUI applications on Windows using Perl & Tk?

I have a bunch of related Perl scripts that I would like to put together in one convenient place. So I was thinking of building a GUI and incorporating the scripts. I'm using Strawberry Perl on Windows XP and have just installed Tk from cpan about fifteen minutes ago. Before I go for it, I want some sound advice either for or against it.
My other option is to translate the Perl scripts into VB and use Visual Studio 2008, but that might be too much hassle for an outcome that might end up all the same had I just stuck with Perl & Tk.
I haven't looked yet, but maybe there is a module for Visual Studio that would allow me to invoke Perl scripts?
The main requirements are:
It must be able to communicate with MySQL
It must be able to fetch & parse XML files from the internet
It must be transportable, scalable, and sustainable
What direction would you take?
I've built Perl/Tk apps on Windows before and found it just fine, including using PAR to package everything up for distribution to others. It was nice being able to do most of my development on a proper Linux system and have things just magically work on Windows :) The only gotcha I encountered is that Tk doesn't play well with ithreads.
I personally would recommend wxPerl over Tk. It has native looking widgets, at least in my view leads to cleaner code and you can use wxGlade as a GUI designer.
If you haven't programmed with Perl/Tk I would think that Tkx (developed by Activestate) would be a better option. Tkx is a thin layer over Tcl/Tk, which gives it access to the new themed widgets in Tcl/Tk so your application would look better.
Perl/Tk has a lot more documentation around, but the module itself does not seem to be developed anymore. The documentation for Tkx is very sparse but by following the Tkx tutorial files on CPAN, it should be easy to get started.
WxWidgets (available for Perl via wxPerl) is an excellent graphical toolkit, but wxPerl only implements a subset of the available widgets.
PAR is convenient but if you go with Perl/Tk, the result will not run natively on OS X. (Users will need to run X11 first, which is problematic, especially with more recent version of OS X). If you go with Tkx, you can get native application on Mac OSX. Also, ActiveStates's PDK gives you a simple way to package everything to deploy to Windows, Linux, and OS X.
For reference, see the the software (AntConc and AntWordProfiler) at the following site http://www.antlab.sci.waseda.ac.jp/software.html, where AntConc was developed using Perl/Tk and AntWordProfiler was developed using Tkx.
The Process class allows to start new processes from a C# (WPF/Winforms) frontend.
I guess that way you can keep your Perl scripts and use the nice Visual Studio GUI builder.

Choosing a Perl GUI Module for maximum cross platform usage

I'm working on a couple of personal project to improve my Perl skills. Among other things they need to provide a GUI interface on different OSes. In the past what little GUI work I did on Perl used TK (and that was just working through some sample projects). I know that beyond TK, Qt and GTK are also options.
Are there others?
Among the available options, what do you recommend for this purpose. Right now I'm leaning towards GTK as an Ubuntu user but I'm wondering if Qt might not be a better choice for cross platform work with Windows.
I would suggest Wx. It is a meta-toolkit designed for cross platform usage and will use whatever underlying toolkit is available on your target platform.
I've been writing the module XUL::Gui which uses Firefox or XULRunner to render its gui. Both of those are cross platform (and use native styling). Gui's are constructed using a functional form of the XUL and HTML markup languages with CSS styling. The module is still in development, but may be complete enough for your needs. Here is a short example:
use XUL::Gui;
display Window title => 'my window',
H2('event handling example:'),
Button(
label => 'click me',
oncommand => sub {
my ($self, $event) = #_;
$self->label = 'ouch!';
}
);
The module itself is pure Perl, and has only core module dependencies, making it easy to install (unlike nearly all the other gui toolkits for Perl which require C code compilation).
For maximum cross platform support, you can also use XUL::Gui's alter ego Web::Gui which removes the Mozilla specific XUL support, but opens the door to rendering an HTML + CSS gui with most modern web browsers.

Is Perl a good option for writing platform independent desktop applications?

Is Perl a good option for writing (possibly and partially) platform independent desktop applications? I know there are interesting widget libraries like GTK2 Perl and wxWidgets but I'm not familiar with development on Windows.
Is it possible to write a good application with Perl and those tools, maybe embedding everything needed to avoid asking the user to install external (and probably non conventional for many) libraries? Are there examples of this kind of apps around?
Sort of. You can certainly write Perl scripts that provide a Tk GUI that will work on any platform, and you can even package the libraries they need to work with PAR to put together an application that will run anywhere with an appropriate version of perl installed without requiring the end use to install a bunch of stuff from CPAN to get it to work.
However, an application that will run anywhere without requiring an existing perl installation (and it's probably not safe to assume the average Windows user will have perl) isn't really viable. One solution would be to distribute an "everywhere but Windows" version that simply uses PAR to include the necessary libraries, and a PAR::Packer-built version for Windows, which would be a fully-functional .exe including the perl interpreter and the libraries.
EDIT: following daotoad's response, it does appear that ActiveState's PerlApp can build cross-platform binaries for for Windows, Mac OS X, Linux, Solaris, and AIX; I haven't tried this but if it works as advertised it would seem to meet your requirements.
My employer uses ActiveState's PerlApp to produce executable versions of our apps with great success.
We tested PAR and PerlApp before selecting our packaging method. At that time, PerlApp had faster load times. Several versions of each tool have come and gone since then, so I would recommend testing with each before selecting a tool.
Executable packaging has been very effective for us.
There are a few portability issues issues with Perl, but if you pay attention to perlport, it's easy to avoid most issues. Our biggest problems are always with Win32. From time to time, some simple thing will require stupid, bizarre work-arounds or digging into Win32 API for a platform specific hack.
We have used both Wx and Tk guis.
Frozen Bubble is a well known and widely available app you can look at.
Check out PAR (available via CPAN) with respect to your bundling requirement.
Consider having a look at Padre for an example of a complex application written in perl using Wx.
So yes. All of your requirements are achievable, including portability.
I am working on the module XUL::Gui on CPAN, which uses Firefox to display cross platform gui apps from Perl. It is under development, but stable, and may be complete enough for your needs. You can build your gui in HTML and/or XUL (the Mozilla gui language that Firefox itself is written in), and then style everything with CSS. Let me know if you have any feature requests.

Is there a good tool to debug Perl-based web applications?

Is there a good tool to debug Perl-based web applications? Output to stderr or stdout don't count as tool.
Yup, I've got the perfect tool for you.
CGI::Inspect lets you inspect and debug a running Perl web application.
Read more about the module on the developer's website.
Or check out the slides from a presentation about it at YAPC::NA 2009.
The Komodo IDE supports remote debugging for just this sort of thing.
The EPIC plugin for Eclipse will also let you do this.
In CGI, you can
use CGI::Carp qw(fatalsToBrowser);
It will display any fatal message in your browser.
With Mason, leave the default error option, which outputs the call stack in your browser.
Let's not assume, like the first answer, that the module being used is CGI, but rather provide something that will work across anything that is supported by/supports PSGI/Plack.
Perhaps combine Plack::Middleware::Debug (to display information about the active request and response, perhaps adding the Log4perl panel) and Devel::hdb to debug the running code in a separate tab.
Also available (I haven't tried it though) is InteractiveDebugger
Anything you try should be run in a single process, non-forking server like HTTP::Server::PSGI or HTTP::Server::Simple::PSGI for development and debugging instead of something like Starman.
Late to the party on this one, but I felt some other tools should be called out in case anyone else stumbles upon this question.
The Perl command line debugger is perfectly serviceable, but occasionally hard to use, and has a fairly steep learning curve, especially for those who are used to GUI tools.
Devel::hdb is a great tool for this. It integrates with the existing debugging functionality in Perl, so you can start the application with -d:hdb as a flag, and then you can hit a web based endpoint to start stepping through the application easily. It supports breakpoints, watch expressions, and stepping, so it can help you figure out where an issue is on a somewhat live application.
As mentioned earlier, ActiveState's Komodo IDE (not Edit) has a built in graphical debugger, that can work on a local instance or against a remote server. The remote server must have some libraries installed, and activated within the code to work. It's not invasive, but it should be known. Also, Komodo costs money, but they do provide a trial period. It'll work on Windows, OS X or Linux. ActiveState's Perl Dev Kit has an independent debugger as well, but I haven't used it in years.