*Perl* Geoff Cox & Adrian Ward Perl (an acronym for 'Practical Extraction and Report Language') is a programming language, first developed for Unix by Larry Wall in 1987, and developed as an open source project to build on the capabilities of the 'awk' utility.(1) Wall required a language that combined the quickness of coding available in 'shell' (or awk) programming, with the power of advanced tools like 'grep' (without having to resort to a language like C, C++ or assembly). Perl therefore lies somewhere between low-level programming languages and high-level programming languages. It combines the best of both worlds in being relatively fast and unlimited: 'Perl is easy, nearly unlimited, mostly fast, and kind of ugly'.(2) Perl uses a highly flexible syntax which gives programmers greater freedom of expression than many other languages. Its concise regular expressions allow complex search and modify operations to be encoded into dense operators. This makes Perl particularly difficult to read (or ugly) for those unfamiliar with its form, however the syntax is really relatively simple (and carries its own particular aesthetic attractions). Perl programs are generally stored as text source files, which are compiled into virtual machine code at run-time. There is a distinction between the program that interprets, compiles and executes Perl code (perl) and the language name (Perl). In reference to other Open Source projects that embrace obfuscation, it should never be an acronym (PERL) despite the documentation clearly stating it stands for both 'Pathologically Eclectic Rubbish Lister' as well as 'Practical Extraction and Report Language'. Perl programs are usually called 'Perl scripts' and due to the interpreted nature of the language, are ideal for rapid development and reworking of code. Changes can be made and the code retried very swiftly and this has led to Perl being favoured in diverse scenarios requiring complex yet quick solutions. In addition, Perl is particularly useful as 'glue code' and for mixed-language script programming. Perhaps this is what Harwood was thinking about in his 'porting' of William Blake's poem _London_ (of 1792) into _London.pl_ (of 2002). This is more than simply a formal exercise. In both the original Blake version and Harwood's adaptation, statistics and the modulation of populations are used for social comment, but in the Perl version material conditions are registered more overtly as both form and content. The politics of Blake's poem describing the social conditions of London are translated to a contemporary cultural and technical reality in which people are reduced to data: local %DeadChildIndex; # The Data for the DeadChildIndex should be structured as follows: # # %{DeadChildIndex} => { # IndexValue => { # Name => " Child name If known else undefined "; # Age => " Must be under 14 or the code will throw an # exception due to $COMPLICITY"; # Height => "Height of the child" # SocialClass => "RentBoy YoungGirl-Syphalitic-Innoculator # CrackKid WarBeatenKid ForcedFoetalAbortion # Chimney-Sweeps UncategorisedVictim " # }, As many as found # } (4) In terms of the application of Perl for social comment, Harwood is extending an established aesthetic practice referred to as 'perl poetry' that emphasises the point that code is not merely functional but can have expressive or literary qualities too.(5) Take, for example the winner of _The Perl Poetry Contest_ of 2000 by Angie Winterbottom: if ((light eq dark) && (dark eq light) && ($blaze_of_night{moon} == black_hole) && ($ravens_wing{bright} == $tin{bright})){ my $love = $you = $sin{darkness} + 1; }; (6) Poetry is analogous to code in as much as it is both written and spoken or read and executed.(7) There are accepted techniques for reading code, and Winterbottom's poem relies on her choice of spacial arrangement and the syntactic understanding of the language itself. Only a programmer familiar with hash tables would understand that '$blaze_of_night{moon} == black_hole' can be read as 'The moon, a black hole in the blaze of night'. Interpreted scripting languages such as Perl appear to hold more open-ended creative possibilities that emphasise process rather than end-product, if only because access to the source code is so readily available, and because quite often part of using a Perl script entails reading its source - this is true regardless of whether dealing with Perl poetry, or in a conventional functional deployment. Programming with Perl appears to emphasise material conditions, and evokes how N. Katherine Hayles, in _Writing Machines_, stresses materiality in relation to writing.(8) She describes the mixed (semiotic) reality that literature engenders - between the reality literally at hand, the one evoked through imagination and the situation to which it applies - a play of signification in other terms. In addition to the writer and reader, there are other players involved in the production of a text or program that include those involved in the development of the programming language, other software developers, the engineers who design the machines on which it runs, the factory workers who build these machines, the technicians that maintain them, and so on.(9) All these players are situated in the material world and the social relations that arise from this. Materiality expressed in this way follows a critical Modernist tradition that brings into view the technical apparatus or writing machine that produces it - familiar to an analysis focussed on cultural production such as literary criticism. Hayles goes further than this, and adds the materiality of the text itself to the analysis in a similar way to those who consider code to be material. In this way, it is the materiality of writing itself that is expressed through the relationship between natural language and code - one tended towards control and precision, the other towards free form and expression.(10) This is particularly evident in 'codework' (such as Harwood's above) and other examples that combine so-called natural and artificial languages that play with signification. In such examples, meaning and authorship remain in question.(11) Working with code goes further than this. The execution of code engages materiality and imagination through the possible and often unpredictable actions that result. The materiality therefore requires attention to the technical apparatus, but also to the program - the activity of programming and the activity of the program once executed. Perl is a useful tool in this respect. It remains free and transparent, and it is impossible to make an opaque binary. If installed and run, it can always be turned back into source code. Perl is an open source project, emerging out of a Unix inspired culture of sharing.(12) In the lecture 'Perl, the first postmodern computer language', Wall is keen to point out that modernist culture was based on 'or' rather than 'and', something he says that postmodern culture reverses.(13) But this position appears to disregard a critical modernist tradition that would emphasise issues of materiality, reflexivity and transparency of production. For instance, Marshall Berman's argument, in _All That is Solid Melts into Air_, emphasises that dialectical thinking asserts 'and-both' over 'either-or'. Berman is sceptical of claims about change if they do not embrace contradiction. His position is informed by a dialectical understanding of modernity representing a transitional state between the old and the new - modernity remains an 'incomplete project'.(14) Berman suggests that it is our thinking about modernity that has stagnated. He says: 'Modernity is either embraced with a blind and uncritical enthusiasm, or else condemned... in either case, it is conceived as a closed monolith, incapable off being shaped or changed... Open visions of modern life have been supplanted by closed ones, Both/And by Either/Or.'(15) In claiming 'AND has higher precedence than OR does', Wall is emphasising the eclecticism of Perl and the ways in which algorithms can be expressed in multiple ways that express the style of the programmer. Both of these operators are fundamental to Boolean logic and hence applying precedence to one over another appears to be contradictory.(16) However, Perl embraces this sort of peculiarity, and this is how it extends the possibilities of coding beyond simply functional intentions. The extent to which Perl gets (mis)used might point to how contemporary software practices focus more on diversity and recapitulation than innovation and optimisation. This resonates in Wall's claim that one of Perl's features is to focus attention not so much on the problem but on the person trying to solve the problem, on the creativity of the programmer: 'It doesn't try to tell the programmer how to program'.(17) $wall{modernism} = 'or'; $wall{postmodernism} = 'and'; $berman{modernism} = 'both/and'; $berman{postmodernism} = 'either/or'; if ($wall{modernism} || $berman{postmodernism}) { if ($wall{postmodernism} && $berman{modernism}) { $wall{modernism} = &condemn($berman{postmodernism}); # closed $wall{postmodernism} = &embrace($berman{modernism}); # open } } print "Wall: '$wall{postmodernism}'\n"; print "Berman: '$berman{modernism}'\n"; sub embrace { return $_[0]; # blind and uncritical enthusiasm } sub condemn { undef $_[0]; # blind and uncritical condemnation } In this way rather than Perl being condemned as the first postmodern computer language, the preference for the connective 'and' as opposed to 'or' is in keeping with critical practices that promote the development of new forms of expression that preserve contradiction.(18) The suggestion is that Perl is not only useful on a practical level but that it also holds the potential to reveal some of the contradictions and antagonisms associated with the production of software. NOTES: 1. Larry Wall, 'Perl, the first postmodern computer language', 1999, http://www.wall.org/~larry/pm.html (interestingly, Wall's background is in linguistics). 2. Randall L. Schwartz & Tom Phoenix, _Learning Perl_, Cambridge: O'Reilly, 2001, p. 4. 3. For instance, Perl Mongers is a loose association of international Perl User Groups, http://www.pm.org, and discussions take place at The Perl Monastery, http://www.perlmonks.org, see also _The Perl Journal_, http://www.tpj.com/ 4. Florian Cramer has written a 'feature' on Harwood's _London.pl_ on the Runme software art repository, http://www.runme.org/feature/read/+londonpl/+34/ 5. An early example of literature using the Perl programming language is Sharon Hopkins' 1992 paper 'Camels and Needles: Computer Poetry Meets the Perl Programming Language', in _The Perl Review_, Volume 0 Issue 1, 1991 (http://www.theperlreview.com/Issues/The_Perl_Review_0_1.pdf). It was first presented at the _Usenix_ Winter Technical Conference in 1992. 6. Kevin Meltzer, 'The Perl Poetry Contest', in _The Perl Journal_, Volume 4, Issue 4, 2000 (http://www.tpj.com). This example was previously cited in Geoff Cox, Alex McLean and Adrian Ward (2001) 'The Aesthetics of Generative Code', _Generative Art 00_ conference, Politecnico di Milano, Italy, http://www.generative.net/papers/aesthetics/index.html 7. This statement reflects our previous collaborative essay (with Alex McLean), 'The Aesthetics of Generative Code', _Generative Art 00_ conference, Politecnico di Milano, Italy, 2001, http://www.generative.net/papers/aesthetics/index.html 8. N. Katherine Hayles, _Writing Machines_, Cambridge, Mass.: MIT Press, 2002. 9. Ibid., p. 6. 10. See Florian Cramer for more on this relation, in 'Ten Theses About Software Art', 2003, http://cramer.plaintext.cc:70/all/10_thesen_zur_softwarekunst/ 11. The materiality of text or code is verified by the property rights exerted on it - intellectual property would even cast ideas as material objects in this respect. 12. Perl is, by and large, an all-inclusive implementation of Unix and the GNU utilities. See Eric S. Raymond, _The Art of UNIX Programming_, Boston: Addison-Wesley, 2004. 13. Wall, Op cit. 14. Incompleteness is the character that JŸrgen Habermas assigns to modernity, emphasising its transitory, elusive, ephemeral, dynamic qualities, in 'Modernity - An Incomplete Project' (1980), in Hal Foster, ed., _Postmodern Culture_, London: Pluto Press, 1991, p. 5. 15. Marshall Berman, _All That Is Solid Melts Into Air: the Experience of Modernity_, London: Verso, 1999 (1982), p. 24. 16. Following Boolean logic, data follows both an arithmetical and logical binary form, as a set of choices between two conditions. It can also be extended to include more complex and conditional formations such as 'or', 'and', 'not', as well as rules about consistency, implication and contradiction. 17. Wall, Op cit. 18. For example, Florian Cramer's 'and.pl' (http://cramer.plaintext.cc:70/poems/and): open(THIS,'and');open (THAT,">>and");while(){print$_; print THAT"#$_"}; "#to"; close (THIS);