The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.