Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

[SOLVED] SWF::Builder, printing the swf file, rather than saving it

by reasonablekeith (Deacon)
on Jan 16, 2008 at 10:11 UTC ( #662639=perlquestion: print w/replies, xml ) Need Help??

reasonablekeith has asked for the wisdom of the Perl Monks concerning the following question:

Morning Monks

As above really, is there a way to print the gen'd swf object, rather than being forced to save it to a file? I can't see it in the docs.

I did have a look through SWF::File and SWF::BinStream, but got a bit lost to be honest. Any nudges in the right direction would be appreciated.

Rob

---
my name's not Keith, and I'm not reasonable.
  • Comment on [SOLVED] SWF::Builder, printing the swf file, rather than saving it

Replies are listed 'Best First'.
Re: SWF::Builder, printing the swf file, rather than saving it
by moritz (Cardinal) on Jan 16, 2008 at 11:33 UTC
    I tried to look into the source code of the modules, but the inheritance hierarchy got me confused ;-)

    Did you try to provide \*STDOUT or simply *STDOUT instead of a filename to see if it just works, magically and by chance? ;-)

    Of course you can also write a wishlist bug report against the appropriate module, and hope for a friendly CPAN author.

      ++!

      it really is as simple as

      $movie->save(*STDOUT);
      I had no idea you could do that! I'm not even sure exactly what's going on there, some light reading for me this weekend then!

      Thanks, Rob

      ---
      my name's not Keith, and I'm not reasonable.
Re: SWF::Builder, printing the swf file, rather than saving it
by hipowls (Curate) on Jan 16, 2008 at 11:36 UTC

    SWF::BinStream::File allows writing to a file handle, so use IO::Scalar to create a file handle that writes to a string and then you can print the string.

    I've not tested this code but something along these lines may do what you want.

    use SWF::File; use IO::Scalar; my $swf_data = ''; my $swf_fh = IO::Scalar->new( \$swf_data ); my $swf = SWF::BinStream::Write->new($swf_fh); ... $swf->close(); close $swf_fh; print $swf_data;

Re: SWF::Builder, printing the swf file, rather than saving it
by olus (Curate) on Jan 16, 2008 at 10:58 UTC
    Sending an object directly into the browser implies sending the appropriate MIME headers so that the browser recognizes the type of information to display.
    For an swf the mime-type is application/x-shockwave-flash.

    update: Sorry, not what was asked
      Yep, I realise this (and you have inferred correctly that I intend to serve the built object as an http response), but that doesn't answer my question.

      I'll be able to print the header okay, it's the binary data which forms the built swf object that I can't see how to get hold of (other than saving it to disk with a temp name, reading it, printing the contents in the response and then deleting the file, ug!)

      ---
      my name's not Keith, and I'm not reasonable.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://662639]
Approved by Corion
Front-paged by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (3)
As of 2022-09-29 17:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I prefer my indexes to start at:




    Results (125 votes). Check out past polls.

    Notices?