NAME
Text::Format::Screenplay - Create a movie screenplay PDF from text.
SYNOPSIS
use Text::Format::Screenplay;
my $formatter = Text::Format::Screenplay->new();
$formatter->pdf("./myscreenplay.sp", "./myscreenplay.pdf");
DESCRIPTION
This module takes a text file and turns it into a printable movie screenplay PDF. The text file contains minimal syntax to identify the parts of the screenplay.
new()
This function creates a new instance of Text::Format::Screenplay and returns it.
pdf( input-filename, output-filename )
This method formats the file given and creates a PDF file. The generated file can then be read on screen or printed, for example.
Currently the formatter applies all industry standards on how a movie screenplay should be formatted.
Text screenplay format
This module expects as input a file in a custom text-based format. This section explaines this format, which is kept very simple and minimal so to not interfer with the writing process - after all the screenplay format is very simple itself.
The format introduced is called "SP" (ScreenPlay) and the file ending is usually ".sp", but this is not a restriction.
The format is paragraph based, so when read the file is split into paragraphs, each having a specific meaning, determined by the first characters of that paragraph (e.g. ":"). In some cases there can be a label before the first character (like in dialoge, s.below).
Here is a complete example of a valid .sp file:
title: Pulp Fiction
author: Quentin Tarantino
contact:
Writers Guild;
Westend Drive 1234;
5342 Los Angeles, CA;
United States of America
draft: Final Draft
date: May 1993
:INT. COFFEE SHOP - MORNING
A normal Denny's, Spires-like coffee shop in Los Angeles.
It's about 9:00 in the morning. While the place isn't jammed,
there's a healthy number of people drinking coffee, munching
on bacon and eating eggs.
It is impossible to tell where the Young Woman is from
old she is; everything she does contradicts something she did.
The boy and girl sit in a booth. Their dialogue is to be said
in a rapid-pace "HIS GIRL FRIDAY" fashion.
YOUNG MAN: No, forget it, it's too risky. I'm
through doin' that shit.
YOUNG WOMAN: You always say that, the same thing
every time: never again, I'm through, too dangerous.
(imitates a duck) Quack, quack, quack, quack, quack,
quack, quack...
The boy and girl laugh, their laughter putting a pause in
there, back and forth.
>CUT OUT
:CUT TO
CREDIT SEQUENCE
:INT. '74 CHEVY (MOVING) - MORNING
An old gas guzzling, dirty, white 1974 Chevy Nova
a homeless-ridden street in Hollywood. In the front seat are
two young fellas -- one white, one black -- both wearing cheap
black suits with thin black ties under long green dusters.
Their names are VINCENT VEGA (white) and JULES WINNFIELD
~THE END
Titlepage parts
The titlepage parts follow the normal paragraph format partname:partcontent. The example above shows all available titlepage parts: title, author, contact, draft and date. As you can see, titlepage parts can span several lines (see contact in the example above).
Scene headlines
A scene starts with a headline, which is a single line preceeded by a colon (":"), e.g.:
:INT. '74 CHEVY (MOVING) - MORNING
Dialog
When a character's dialogue is to be written, just write the character's name, then a colon (":") and then the spoken text, which can span multiple lines.
Transitions
Transitions are optional markings at the start or end of a scene (like "CUT TO"). These are preceeded by a "<" or ">" depending on the alignment that should be used for the transition:
>CUT OUT
:CUT TO
Scene description
Any paragraphs not beeing a titlepage part, a scene headline, a dialoge text or a transition is considered a scene description.
EXPORT
None by default.
THE FUTURE
The future of this module depends on its users. If you have any suggestions or find bugs, let me know, so I can improve this module and fix those bugs. Also, anyone who finds errors in the way the screenplay is formatted: please, let me know.
SEE ALSO
AUTHOR
Tom Kirchner, <tom@tomkirchner.com>
COPYRIGHT AND LICENSE
Copyright (C) 2011 by Tom Kirchner
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.9 or, at your option, any later version of Perl 5 you may have available.