教程:通过NSTask用Cocoa执行perl脚本

本文将用一个例子帮助你理解如何使用NSTask,例子通过在Cocoa中执行一个perl脚本,实现去掉给定NSString中的所有HTML标签。

 

这里是一个简单的 perl 脚本,文件名是 stripper.pl ,功能是去掉所有 HTML 标签。
 
#!/usr/bin/perl
while (<>) {
    $_ =~ s/<[^>]*>//gs;
print $_;
}
 
记得把这个脚本 chmod +x ,将它加入项目中,即得把它复制进执行文件包内。
 
这个方法会将 string 参数直接传递给 perl 脚本,并将结果返回。
 
- (NSString *) stringStrippedOfTags: (NSString *) string
{
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *stripperPath;
    stripperPath = [bundle pathForAuxiliaryExecutable@"stripper.pl"];
           
    NSTask *task = [[NSTask allocinit];
    [task setLaunchPath: stripperPath];
           
    NSPipe *readPipe = [NSPipe pipe];
    NSFileHandle *readHandle = [readPipe fileHandleForReading];
           
    NSPipe *writePipe = [NSPipe pipe];
    NSFileHandle *writeHandle = [writePipe fileHandleForWriting];
           
    [task setStandardInput: writePipe];
    [task setStandardOutput: readPipe];
           
    [task launch];
           
    [writeHandle writeData: [string dataUsingEncodingNSASCIIStringEncoding]];
    [writeHandle closeFile];
           
    NSMutableData *data = [[NSMutableData allocinit];
    NSData *readData;
           
    while ((readData = [readHandle availableData])
           && [readData length]) {
        [data appendData: readData];
    }
           
    NSString *strippedString;
    strippedString = [[NSString alloc]
                                                initWithData: data
                                                encodingNSASCIIStringEncoding];
           
    [task release];
    [data release];
    [strippedString autorelease];
           
    return (strippedString);
           
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值