NAME
Term::CallEditor - solicit data from an external editor
SYNOPSIS
use Term::CallEditor qw/solicit/;
my $fh = solicit('FOO: please replace this text');
die "$Term::CallEditor::errstr\n" unless $fh;
print while <$fh>;
DESCRIPTION
This module calls an external editor with an optional text message via the solicit()
function, then returns any data from this editor as a file handle. By default, the EDITOR environment variable will be used, otherwise vi
.
solicit()
returns a temporary file handle pointing to what was written in the editor (or also the filename in list context).
SOLICIT
solicit()
as a second argument accepts a number of optional parameters as a hash reference.
solicit(
"\x{8ACB}",
{ skip_interactive => 1,
binmode_layer => ':utf8'
}
);
- BINMODE => BOOLEAN
-
If true, enables
binmode
on the filehandle prior to writing the message to it. - binmode_layer => binmode layer
-
If set, enables
binmode
on the filehandle prior to writing the message to it. Useful if one needs to write UTF-8 or some other encoded data as a message to the EDITOR. - safe_level => NUMBER
-
Set a custom
safe_level
value for the File::Temp method of that name. The defaultsafe_level
is number 2. Be seeing you. - skip_interactive => BOOLEAN
-
If true,
solicit
skips making a test to see whether the terminal is interactive.
On error, solicit()
returns undef
. Consult $Term::CallEditor::errstr
for details. Note that File::Temp may throw a fatal error if the safe_level
checks fail, so paranoid coders should wrap the solicit
call in an eval
block.
EXAMPLES
See also the eg/solicit
script under the module distribution.
- Pass in a block of text to the editor
-
Use a here doc:
my $fh = solicit(<< "END_BLARB"); FOO: This is an example designed to span multiple lines for FOO: the sake of an example that span multiple lines. END_BLARB
- Support bbedit(1) on Mac OS X
-
To use BBEdit as the external editor, create a shell script wrapper to call bbedit(1), then set this wrapper as the EDITOR environment variable. The
-t
option to bbedit(1) can be used to set a custom title, if desired.#!/bin/sh exec bbedit -w "$@"
Any editor that requires arguments will require a wrapper like this.
BUGS
No known bugs.
Reporting Bugs
Newer versions of this module may be available from CPAN.
If the bug is in the latest version, send a report to the author. Patches that fix problems or add new features are welcome.
http://github.com/thrig/Term-CallEditor
Known Issues
This module relies heavily on the Unix terminal, permissions on the temporary directory (for the File::Temp module safe_level
call), whether system()
can actually run the EDITOR
environment variable, and so forth.
SEE ALSO
vipe(1) of moreutils to use vi(1) in pipes.
AUTHOR
thrig - Jeremy Mates (cpan:JMATES) <jmates at cpan.org>
COPYRIGHT
Copyright 2004-2005,2009-2010,2012 Jeremy Mates
This module is free software; you can redistribute it and/or modify it under the Artistic License (2.0).
HISTORY
Inspired from the CVS prompt-user-for-commit-message functionality.